【问题标题】:What is the proper MvcContrib 3 syntax for this?什么是正确的 MvcContrib 3 语法?
【发布时间】:2011-11-10 16:29:55
【问题描述】:

我继承了一个使用 MVCContrib 1.5 的 ASP.NET MVC 1 网站,我正在尝试升级到 MVC 3 和 MVCContrib 3。

网站使用Html.Grid时出现如下情况

.Columns(column=>{
  column.For("Yes").Action(p =>{%>
    <td>
      <%=this.Hidden("category[" + i +"].Id").Value(p.Id)%>
      <%=this.RadioButton("category[" + i + "].Interested").Value("true") %>
    </td>
  <%});

  column.For("No").Action(p =>{%>
    <td>
      <%=this.RadioButton("category[" + i + "].Interested").Value("false") %> 
    </td>                                                       
  <%});
})

在 MvcContrib 中,.For("Yes") 不再是创建以字符串为标题的列的有效语法。

为了让它工作,我必须将它更改为.For(c=&gt;"Yes"),并且我必须添加.Named("Yes") 才能取回标题文本。据我所知,c=&gt;"Yes" 实际上并没有做任何有用的事情。应该去那里做什么?或者如果它没有造成任何伤害,我应该离开它吗?

另外,.Action 已被弃用,它说要改用 .Custom。我将如何转换上述内容?

column.Custom(p => {%>
  <td style="text-align:center">
    <%=this.Hidden("category[" + i + "].Id").Value(p.Id)%>
    <%=this.RadioButton("category[" + i + "].Interested").Value("true") %>
  </td>
<% }).Named("Yes");

这需要一个返回值,我不知道该放什么,也找不到很多例子。

【问题讨论】:

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


    【解决方案1】:
    column.Custom(
        @<text>
             <td style="text-align:center">
                 @this.Hidden("category[" + i + "].Id").Value(item.Id)
                 @this.RadioButton("category[" + i + "].Interested").Value("true")
             </td>
         </text>
    ).Named("Yes");
    

    【讨论】:

      【解决方案2】:

      For() 方法用于当您只想显示属性的值时 - 因此您可以像这样使用它:

      column.For(p => p.Id).Named("Yes");
      

      请注意,如果您在模型上为 Id 属性赋予了 [Display(Name="Yes")] 属性,则不必使用 Named(),因为默认情况下会使用它。

      当你想显示一些你制作的html时,你可以使用Custom(),这样你就可以只返回一个MvcHtmlString。使用剃刀语法,它可能看起来像:

      column.Custom(p => @Html.Partial("IdPartial",p.Id));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-04-19
        • 2018-11-14
        • 2019-09-07
        • 1970-01-01
        • 1970-01-01
        • 2023-01-25
        相关资源
        最近更新 更多