Forms 如何通过删除MVC4中未通过验证的任何字段来保存表单草稿

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

我们需要用户能够在MVC4中保存表单草稿。 我们已经实现了一个“保存草稿”按钮,该按钮将禁用 客户端验证完成并提交表单

现在在服务器端,计划忽略任何 有验证错误。例如,如果邮政编码字段有“abc” 然后我们将忽略该字段并保存其余字段。如果有字段 必需但未提供的内容也将被忽略

我们正试图找到一种在MVC4 via中实现这一点的优雅方法 伊莫代尔宾德

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区域性)