如何在ViewBag中传递变量列表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在ViewBag中传递变量列表相关的知识,希望对你有一定的参考价值。

我正在开发一个项目,我只需要从两个表中获取数据,我想使用LINQ Query来获取数据。

在我的控制器内:

var Parameters = (from test in _db.tblAddTests
               join par in _db.tblParameters on test.AddTestId equals 
               par.TestId
               where par.ParameterDatatype == 3
               select new
               {
                ParameterId = par.ParameterId, 
                ParameterName = par.ParameterName,
                TestName = test.TestName
                }
            ).ToList();
ViewBag.Parameters = Parameters;

我想在剃须刀中使用这个参数:

@foreach (var item in ViewBag.Parameters)
{
    <option value="@item.ParameterId">@item.ParameterName - @item.TestName</option>
}

它目前给我错误,该对象没有ParameterId的定义。虽然我已经尝试过调试,但是item也获得了值,但我不知道如何显示它们,

以下是我在项目变量中获取值的屏幕截图: Values in item variable

这里是错误的屏幕截图:

Error

答案

您可以在控制器中创建一个新类:

public class Params
{
public int ParameterId {get; set;}
public string ParameterName {get; set;}  
public string TestName {get; set;}
}

在视图中您可以像这样使用它

@{
var items = (Params)ViewBag.Parameters;
}
@foreach(var item in items){
your code for html....
}
另一答案

您使用的是匿名类型。在这种情况下它不起作用。使用已知类型或动态。即:

var Parameters = (from test in _db.tblAddTests
               join par in _db.tblParameters on test.AddTestId equals 
               par.TestId
               where par.ParameterDatatype == 3
               select new ParamsClass
               {
                ParameterId = par.ParameterId, 
                ParameterName = par.ParameterName,
                TestName = test.TestName
                }
            ).ToList();
ViewBag.Parameters = Parameters;

public class ParamsClass
{
  public int ParameterId {get; set;}
  public string ParameterName {get; set;}  
  public string TestName {get; set;}
}

在视图中:

@foreach (ParamsClass item in ViewBag.Parameters)
{
    <option value="@item.ParameterId">@item.ParameterName - @item.TestName</option>
}

以上是关于如何在ViewBag中传递变量列表的主要内容,如果未能解决你的问题,请参考以下文章

MVC 将 ViewBag 传递给控制器

如何使用Android片段管理器传递变量[重复]

将数据从片段列表视图项传递到活动字符串变量 onitemclicklistener

如何在导航抽屉活动模板中的片段之间传递字符串变量

如何使用Post方法和ViewBag在视图中传递数据?

带有 viewbag 的 MVC 数据集