首页 > 解决方案 > 在 Asp.Net Core 中通过 ModelState 清除字段值之一?

问题描述

我只想让一个字段值为空

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);
    }

  }

我只想在返回时清理“名称”字段?

标签: c#asp.net-mvcasp.net-coreasp.net-mvc-4blazor

解决方案


尝试这个

 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();

推荐阅读