【问题标题】:asp.net mvc viewdata display in a viewpageasp.net mvc viewdata 在视图页面中显示
【发布时间】:2015-05-30 18:18:49
【问题描述】:

我向这样的视图页面发送了一个视图数据。

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

我尝试在视图页面中显示视图数据,但没有成功。 (对象引用未设置为对象的实例)

foreach语句中viewdata如何显示?

【问题讨论】:

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


    【解决方案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>
            }
    

    【讨论】:

    • 关键是他将引用转换为错误的类型,从当前代码中不清楚他是否想要下拉菜单?
    • @EhsanSajjad 为来自服务器端的数据生成 SelectList 确实没有意义吗?简单地编译代码并不是最好的答案。
    • @ hutchonoid :你是对的。我滥用了使用下拉列表中的表达式。我应该这样写;
    • @Roy 至少你现在已经排序了。 :)
    【解决方案2】:

    您正在将引用转换为错误的类型,您正在创建 SelectList 实例,而在 View 中您正在将其转换为 IList&lt;T&gt;,您应该将其转换为 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>
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多