【问题标题】:Clear One of Fields Value By ModelState In Asp.Net Core?在 Asp.Net Core 中按 ModelState 清除字段值之一?
【发布时间】:2021-10-17 21:58:07
【问题描述】:

我只想让一个字段值为空

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-mvc asp.net-core asp.net-mvc-4 blazor


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    试试这个

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

    【讨论】:

    • @sunboy_sunboy 你需要删除名字做什么?
    • 清除字段值
    【解决方案3】:

    我使用了 ViewBag,效果更好

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

    }

    HTML:

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

    【讨论】:

    • 有点违背了视图模型和数据绑定的目的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-29
    • 1970-01-01
    • 1970-01-01
    • 2019-08-01
    • 2021-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多