如何在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也获得了值,但我不知道如何显示它们,
这里是错误的屏幕截图:
答案
您可以在控制器中创建一个新类:
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中传递变量列表的主要内容,如果未能解决你的问题,请参考以下文章