我想在ASP.NET MVC 2中使用强类型HTML帮助程序,我的模型属性为Nullable<T>
。
public class TicketFilter {
public bool? IsOpen { get; set; }
public TicketType? Type{ get; set; } // TicketType is an enum
// ... etc ...
}
<p>Ticket status:
<%: Html.RadioButtonFor(m => m.IsOpen, null) %> All
<%: Html.RadioButtonFor(m => m.IsOpen, true) %> Open
<%: Html.RadioButtonFor(m => m.IsOpen, false) %> Closed
</p>
<p>Ticket type:
<%: Html.RadioButtonFor(m => m.Type, null) %> Any
<%: Html.RadioButtonFor(m => m.Type, TicketType.Question) %> Question
<%: Html.RadioButtonFor(m => m.Type, TicketType.Complaint) %> Complaint
<!-- etc -->
</p>
但是,以这种方式使用帮助器会抛出ArgumentNullException
- 第二个参数不能为空。我尝试使用null
/ new bool?()
以及new TicketType?
而不是String.empty
,而不是{{1}}。所有都导致相同的异常。我该如何解决这个问题并将控件绑定到空值?
答案 0 :(得分:7)
试试这个:
<p>Ticket status:
<%: Html.RadioButtonFor(m => m.IsOpen, "") %> All
<%: Html.RadioButtonFor(m => m.IsOpen, "true") %> Open
<%: Html.RadioButtonFor(m => m.IsOpen, "false") %> Closed
</p>
<p>Ticket type:
<%: Html.RadioButtonFor(m => m.Type, "") %> Any
<%: Html.RadioButtonFor(m => m.Type, "Question") %> Question
<%: Html.RadioButtonFor(m => m.Type, "Complaint") %> Complaint
<!-- etc -->
</p>
答案 1 :(得分:4)
Darin的回答是正确的,但是当属性为null时,没有选择正确的单选按钮。以下代码将修复...
<%: Html.RadioButtonFor(m => m.Type, "", new { @checked = (Model.Type == null) }) %> Any
<%: Html.RadioButtonFor(m => m.Type, "Question") %> Question
<%: Html.RadioButtonFor(m => m.Type, "Complaint") %> Complaint
答案 2 :(得分:0)
我相信您应该使用RadioButtonListFor
HTML帮助器。看一下这个SO post。