2016-08-12 80 views
1

我刚刚使用MVC 5和.NET框架4.5,但遇到了问题。我有一个表单,并且我想在出错时重置表单的字段,但保留错误并显示给用户。目前我可以清除错误的字段,但这也可以消除错误。我曾尝试过清理表单时保存错误(MVC)

originalModel.field= ""; 

但是这并不清除该字段。我也试过只用

ModelState.Clear(); 

但是这也没有做任何事情。

这就是我目前正与(它清除一切):

if (!ModelState.IsValid) 
{ 
    TestModel blank= new TestModel(); 
    ModelState.Clear(); 
    return View("View.cshtml", blank); 
} 
+0

一般来说,处理表单和验证错误的首选方法是将数据保持机智并显示错误。让用户更新发生验证错误的字段的数据。 – Igor

回答

1

如果你绝对需要这种行为,你可以去设置您的视图模型的这个属性的空字符串值在ModelState字典中。

[HttpPost] 
public virtual ActionResult Index(CreatePostVm model) 
{ 
    if (ModelState.IsValid == false) 
    { 
    ModelState["PostTitle"].Value = 
      new ValueProviderResult(string.Empty, string.Empty,CultureInfo.InvariantCulture); 

    return View(model); 
    } 
    // to do : Return something 
} 

上面的代码将您CreatePostVm视图模型的PostTitle属性设置为一个空的文本。因此,在您的视图中,输入字段将为空文本,但仍显示PostTitle字段的验证错误消息。