【发布时间】:2011-04-30 23:36:10
【问题描述】:
我想在 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 ...
}
查看 (HTML)
<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。所有结果都导致相同的异常。如何解决此问题并将控件绑定到空值?
【问题讨论】:
-
您希望单选按钮返回什么空值?
-
我会想象一个空白字符串,甚至是“null”这个词。大概
DefaultModelBinder会知道在从表单值构建TicketFilter以传递给我的操作方法时该怎么做,不是吗?
标签: asp.net-mvc asp.net-mvc-2 nullable html-helper