在 Asp.Net Core 中通过 ModelState 清除其中一个字段值?

Clear One of Fields Value By ModelState In Asp.Net Core?

我只想让一个字段值为空

ModelState.Clear清除所有字段

型号:

 public class UserViewModel{
      [Required("")]
      public string Mobile { get; set; }
      [Required("")]
      public string Name { get; set; }
     }

控制器:

public IActionResult Create(UserViewModel viewModel){
   if (!ModelState.IsValid)
    {
      //clear just field "Name"
 
      return view(viewModel);
    }

  }

我只想在 return ?

时清除“名称”字段

试试这个

 if (ModelState.ContainsKey("Name")) ModelState.Remove("Name");

最好这样使用

if (ModelState.ContainsKey("Name")) ModelState.Remove("Name");

if (!ModelState.IsValid)
    {
       return view(viewModel);
    }

如果您只想清除值

ModelState.SetModelValue("Name", new ValueProviderResult(string.Empty, CultureInfo.InvariantCulture));

因为你没有清除错误,如果它有错误,ModelState 仍然无效。

如果需要,您可以删除错误

 ModelState["Name"].Errors.Clear();

您可以使用ModelState.Remove("FieldName");

我用了 ViewBag,效果更好

public IActionResult Create(UserViewModel viewModel){
  if (!ModelState.IsValid)
   {
       ViewBag.value = ""; 
       return view(viewModel);
   }

}

Html :

<input id="answer" value="@ViewBag.value" asp-for="Name"/>