正确的MvcContrib 3语法是什么?

本文关键字:语法 是什么 MvcContrib | 更新日期: 2023-09-27 18:14:00

我继承了一个ASP。. NET MVC 1网站使用MVCContrib 1.5,我试图升级到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");

这期望一个返回值,我不确定该放什么,找不到很多例子。

正确的MvcContrib 3语法是什么?

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");

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

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

注意,如果你给Id属性一个模型上的[Display(Name="Yes")]属性,你不必使用Named(),因为这是默认使用的。

你可以使用Custom()当你想要显示一些你精心制作的html,所以你可以只返回一个MvcHtmlString。使用razor语法,它可能看起来像:

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