我们需要用户能够在MVC4中保存其表单草稿。 我们已经实现了“保存草稿”按钮,该按钮禁用了 客户端验证完全并提交表单。
现在在服务器端,计划是忽略任何表单字段 有验证错误。例如,如果邮政编码字段具有“abc” 然后我们将忽略该字段并保存其余字段。如果有任何字段 需要但未提供的也将被忽略。
我们试图找出一种优雅的方式在MVC4中执行此操作 IModelBinder。
public class CustomModelBinder : DefaultModelBinder
{
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var result = base.BindModel(controllerContext, bindingContext);
if (!controllerContext.Controller.ViewData.ModelState.IsValid)
{
foreach( var state in controllerContext.Controller.ViewData.ModelState)
{
if( state.Value.Errors.Count > 0) {
var fieldName = state.Key;
// Clear original data field that has the error.
}
}
// Now redo the binding without the fields that presented a problem.
result = base.BindModel(controllerContext, bindingContext);
}
return result;
}
}
所以上面的问题是如何清除特定的字段数据,以便它可以重新运行 数据绑定并生成模型而没有导致验证错误的字段?