在视图页中显示Asp.net MVC视图数据

本文关键字:视图 net MVC 数据 Asp 显示 | 更新日期: 2023-09-27 17:51:08

我向视图页面发送了一个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 ?

在视图页中显示Asp.net MVC视图数据

对于要由用户选择的数据,通常使用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());
    }
<<p> 视图/strong>
@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>
        }

您正在将引用转换为错误类型,您正在创建SelectList实例,而在视图中将其转换为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>
        }