Forms 如何通过删除MVC4中未通过验证的任何字段来保存表单草稿
我们需要用户能够在MVC4中保存表单草稿。 我们已经实现了一个“保存草稿”按钮,该按钮将禁用 客户端验证完成并提交表单 现在在服务器端,计划忽略任何 有验证错误。例如,如果邮政编码字段有“abc” 然后我们将忽略该字段并保存其余字段。如果有字段 必需但未提供的内容也将被忽略 我们正试图找到一种在MVC4 via中实现这一点的优雅方法 伊莫代尔宾德Forms 如何通过删除MVC4中未通过验证的任何字段来保存表单草稿,forms,validation,asp.net-mvc-4,Forms,Validation,Asp.net Mvc 4,我们需要用户能够在MVC4中保存表单草稿。 我们已经实现了一个“保存草稿”按钮,该按钮将禁用 客户端验证完成并提交表单 现在在服务器端,计划忽略任何 有验证错误。例如,如果邮政编码字段有“abc” 然后我们将忽略该字段并保存其余字段。如果有字段 必需但未提供的内容也将被忽略 我们正试图找到一种在MVC4 via中实现这一点的优雅方法 伊莫代尔宾德 public class CustomModelBinder : DefaultModelBinder { public override o
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;
}
}
因此,上面的问题是如何清除特定的字段数据,以便它可以重新运行
数据绑定和生成模型时没有导致验证错误的字段?@Inanikian我尝试了这个。state.Value=string.Empty;它说这个值不能分配给。尝试了state.Value.Value相同的问题。和state.Value.Value.RawValue问题相同,state.Value.Value.AttemptedValue问题相同problem@Inanikian那些人都说那套是不可接近的。我刚找到这个。SetModelValue(state.Key,“”);但它需要ValueProviderResult而不是“”。如何提供一个空的ValueProviderResult?我想你可以在Ikian中对
ValueProviderResult
@进行研究,现在就编译并测试它:modelState.SetModelValue(state.Key,new ValueProviderResult(“,”,null));ValueProviderResult(对象rawValue、字符串attemptedValue、CultureInfo区域性)