我发送了一个viewdata到这样的视图页面。
public ActionResult SelectRes(int id)
{
var ResList = resrepository.GetAll();
ViewData["ResList"] = new SelectList(ResList, "ResId", "Res_KORNM");
return View(svcresrelationRepository.GetAll());
}
@foreach (var item in ViewData["ResList"] as List<ITSDapper.Dapper.Resource>)
{
<tr>
<td style="text-align:center;">
@Html.DisplayFor(a=> item.Res_KORNM)
</td>
</tr>
}
我试图在视图页面中显示viewdata,但它没有用。 (对象引用未设置为对象的实例)
如何在foreach语句中显示viewdata?
答案 0 :(得分:1)
您通常会使用SelectList
来表示用户要选择的数据。
如果您打算使用Html.DropDownList
:
@Html.DropDownList("SelectedId",
(IEnumerable<SelectListItem>)ViewData["ResList"])
如果您只是需要查看数据,我会将您的服务器端代码更改为使用SelectList
以外的其他内容。
这可以按如下方式完成:
<强>控制器强>
public ActionResult SelectRes(int id)
{
var ResList = resrepository.GetAll();
ViewData["ResList"] = ResList;
return View(svcresrelationRepository.GetAll());
}
查看强>
@foreach (var item in ViewData["ResList"] as List<ITSDapper.Dapper.Resource>)
{
<tr>
<td style="text-align:center;">
@Html.DisplayFor(a=> item.Res_KORNM)
</td>
</tr>
}
答案 1 :(得分:0)
您正在将引用转换为错误类型,而您正在创建SelectList
实例,而在View中您将其转换为IList<T>
,则应将其转换为SelectList
:
@foreach (var item in ViewData["ResList"] as SelectList)
{
<tr>
<td style="text-align:center;">
@Html.DisplayFor(a=> item.Text) // note this as well
</td>
</tr>
}