什么是适当的MvcContrib 3语法?

时间:2011-11-10 16:29:55

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

我使用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=>"Yes"),我必须添加.Named("Yes")才能获得标题文字。据我所知,c=>"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");

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

2 个答案:

答案 0 :(得分:1)

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

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

请注意,如果您在模型中提供Named() ID属性,则不必使用[Display(Name="Yes")],因为默认情况下会使用此属性。

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

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

答案 1 :(得分: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");