【问题标题】:Html.DisplayFor in mvc webgridmvc webgrid中的Html.DisplayFor
【发布时间】:2013-10-11 22:53:49
【问题描述】:

使用 asp.net mvc webgrid,是否可以使用 Html.DisplayFor 为当前行/列呈现列?

    grid.Column("Roller", "Roller", canSort: true, format: @<text>@Html.DisplayFor( <the row result here> )</text>)

Html.DisplayFor(m) 帮助器使用页面模型,而不是当前行项。有没有办法解决这个问题。

谢谢

//约翰

【问题讨论】:

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


    【解决方案1】:

    是的,这是可能的。例如,假设您将Banner 对象列表绑定到您的WebGrid。还要考虑Banner.Active 属性,这是一个您希望呈现为复选框的boolean 值。你可以这样做:

    format: (item) => { var banner = item.Value as Banner;
                        return Html.DisplayFor(modelItem => banner.Active); 
                       }
    

    你也可以这样做:

    format: (item) => Html.DisplayFor(modelItem => ((item as WebGridRow).Value as Banner).Active)
    

    但我认为第一个选项更具可读性。

    【讨论】:

      【解决方案2】:

      试试这个

      var grid = new WebGrid(Model);
      

      比做

      grid.Column("Roller", "Roller", canSort: true, format: @<text>@Html.DisplayFor(modelItem => item.blabla)</text>)
      

      使用 item.blabla“无论你的项目名称是什么”可能有效,但我对此并没有真正的经验。

      也没有太大区别

      @<text>@Html.DisplayFor(modelItem => item.blabla)</text>
      

      &

      @<text>@item.blabla</text>
      

      两种用法都能发挥作用。

      【讨论】:

      • 如果您将显示属性应用于属性或模型
      • @m.t.bennett 是的,你是对的,这是一个不容易看到的小变化。
      猜你喜欢
      • 1970-01-01
      • 2017-03-14
      • 2018-03-29
      • 2012-02-02
      • 1970-01-01
      • 2011-06-30
      • 2018-04-01
      • 2015-09-15
      • 1970-01-01
      相关资源
      最近更新 更多