我正在做一个项目,我只需要从两个表中获取数据,我想使用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也正在获取值,但是我不确定如何显示它们,
这也是错误的屏幕截图:
答案 0 :(得分:1)
您正在使用匿名类型。在这种情况下将无法正常工作。使用已知类型或动态类型。即:
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>
}
答案 1 :(得分:1)
您可以在控制器中创建新类:
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....
}
答案 2 :(得分:1)
{
public int ID{get; set;}
public string Name{get; set;}
}
在CSHTML中使用以下语法:
@{
var items = (Params)ViewBag.Parameters;
}
@foreach(var item in items){
//body
}