1
因此,我使用ASP.NET MVC RC1並使用DefaultModelBinder的驗證來顯示非空整數字段未設置爲值時的驗證錯誤。這是MVC默認完成的。然而,對於string(varchar)字段也是如此,因爲binder從視圖中傳遞了一個空字符串,這對於非空varchar列是完全有效的。如何在ASP.NET MVC驗證中要求非空varchar列不爲空?
實際上,當我將列標記爲非空時,我總是意味着我希望它不是空的。所以我拿出並稱驗證檢查到默認粘結劑是這樣的:
public class DefaultEntityBinder : DefaultModelBinder
{
protected override bool OnPropertyValidating(ControllerContext controllerContext, ModelBindingContext bindingContext, System.ComponentModel.PropertyDescriptor propertyDescriptor, object value)
{
bool valid = base.OnPropertyValidating(controllerContext, bindingContext, propertyDescriptor, value);
ColumnAttribute column = propertyDescriptor.Attributes.OfType<ColumnAttribute>().FirstOrDefault();
if (column != null &&
propertyDescriptor.PropertyType == typeof(string) &&
!column.CanBeNull &&
value.IsNullOrBlankString())
{
valid = false;
bindingContext.ModelState[propertyDescriptor.Name].Errors.Add("A value is required");
}
return valid;
}
}
我不知道這是否是實現添加必需的字符串字段驗證爲默認的目標的最有效的方法在MVC驗證。