我在 ASP.Net MVC 中发现非常令人沮丧的是,默认模型绑定器Required
在将空(字符串或 null)值绑定到不可为空的值类型时隐式应用注释,而不是简单地将目标保留为默认值,或者至少提供一个选项以允许它成为默认行为。
考虑到将模型上的目标属性类型更改为可空值不方便的情况,我可以使用的最短代码量是多少,以允许默认模型绑定器简单地跳过将空值绑定到不可空值的尝试值类型?我假设我需要 subclass DefaultModelBinder
,但我不确定我需要重写什么来实现所需的行为。
例子:
<input type="text" name="MyField"/>
不带值提交:
public ActionResult MyAction(MyModel model)
{
// do stuff
}
public class MyModel
{
public int MyField { get; set; }
}
MyField
应该允许该属性保留其默认值,0
因为从表单中发布了一个空值。
假设我不能简单地更改属性类型 a Nullable<int>
。