asp.net mvc viewdata在视图页面中显示

时间:2015-05-29 09:41:38

标签: c# asp.net asp.net-mvc razor viewdata

我发送了一个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?

2 个答案:

答案 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>
        }