我正在尝试查看数据库中的项目列表(我正在使用实体框架)。
我的存储库方法:
public List<string> getListOfItems(int i)
{
return (from x in db.Items where x.ID == i select x.Text).ToList();
}
我的控制器:
public ActionResult Index()
{
var itemOutput = repo.getListOfItems(1); // I just put 1 since I didn't know how to specify "i" - However theoretically it should return first item in database but its not
ViewBag.itemOutput = itemOutput ;
return View();
}
型号:
public class items
{
[Key]
public int ID{ get; set; }
public string name{ get; set; }
public string quantity{ get; set; }
}
ItemModel:
public class itemModels
{
public List<List<string>> itemData{ get; set; }
}
查看:
@foreach (var item in ViewBag.itemOutput )
{
<table id="t01">
<tr>
<td>@item.name</td>
</tr>
</table>
}
答案 0 :(得分:2)
ViewBag.itemOutput
是List<string>
,item
为string
。
因此,在您的视图中使用@item
代替@item.name
(因为string
没有.name
属性):
@foreach (var item in ViewBag.itemOutput )
{
<table id="t01">
<tr>
<td>@item</td>
</tr>
</table>
}
另外,要获得完整列表,您可以这样做:
public List<string> getListOfItems()
{
return (from x in db.Items select x.Text).ToList();
}
然后只需拨打getListOfItems()
没有参数。
1)不要在类名中使用复数,除非该类有点集合了
--> public class item // without s
2)您在评论中表示items
已满varchar
,根据您的班级定义,这是不真实的(您有ID
,name
&amp; {{1} })。
3)对quantity
使用string
有点奇怪。
4)您确实可以将quantity
方法更改为:
getListOfItems
但您应该将视图更改回public List<item> getListOfItems()
{
return (from x in db.Items select x).ToList();
// which can be simplified to:
// return db.Items.ToList();
}
。
但是这可以让你做到:
@item.name
5)你有@foreach (var item in ViewBag.itemOutput )
{
<table id="t01">
<tr>
<td>@item.name</td>
<td>@item.quantity</td>
</tr>
</table>
}
,但你没有使用它。您可以修改它并使用它而不是ItemModel
。
答案 1 :(得分:0)
getListOfItems()返回一个字符串列表,但是你指的是ViewBag.itemOutput中的一个实际对象
而不是选择x.Text执行选择x,并返回值List<items>
public List<items> getListOfItems(int i)
{
return (from x in db.Items where x.ID == i select x).ToList();
}
然后你可以保持你的剃刀模板相同,以引用@ item.name