我使用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");
这需要一个返回值,我不知道该放什么,也找不到很多例子。
答案 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");