我正在使用一个匹配表单中所有字段的对象.然后我使用默认绑定来填充我的操作中的对象,就像这样;
public ActionResult GetDivisionData(DivisionObj FormData)
Run Code Online (Sandbox Code Playgroud)
我的DivisionObj在构造函数中将其所有值初始化为string.empty.
问题是当绑定器从发布的表单数据填充模型时,任何未发布的数据在对象中都设置为null,尽管我初始化对象以包含空字符串.
有没有办法改变这一点,以便未发布的数据将是一个空字符串.
Jab*_*Jab 13
这是DefaultModelBinder的默认行为,更具体地说是DataAnnotations框架. 默认情况下,ConvertEmptyStringToNull设置为true.您可以创建自己的模型绑定器并替换默认的模型绑定器.
public class EmptyStringModelBaseBinder : DefaultModelBinder
{
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
bindingContext.ModelMetadata.ConvertEmptyStringToNull = false;
return base.BindModel(controllerContext, bindingContext);
}
}
Run Code Online (Sandbox Code Playgroud)
那么在全球......
ModelBinders.Binders.DefaultBinder = new EmptyStringModelBaseBinder();
Run Code Online (Sandbox Code Playgroud)
虽然我希望他们有一种静态的方法来为默认的模型绑定器设置它.也许在v3 :)
或者,您也可以使用该[DisplayFormat(ConvertEmptyStringToNull=false)]属性在每个属性的基础上设置它.
| 归档时间: |
|
| 查看次数: |
1875 次 |
| 最近记录: |