【问题标题】:Values retained during post back in MVC [duplicate]在 MVC 中回发期间保留的值 [重复]
【发布时间】:2017-04-14 05:48:17
【问题描述】:

假设我有一个带有验证的模型

public class LoginModel
{
    [Required(ErrorMessage="ID not entered")]
    [StringLength(5,ErrorMessage = "Length should be 5")]
    public string Id { get; set; }




}

在视图页面中,我有一个文本框。当验证失败时。控制器返回查看页面并显示错误消息。

public ActionResult Login()
    {
        return View();
    }

    [HttpPost]
    public ActionResult Login(LoginModel lg)
    {
        if(ModelState.IsValid)
        {
            return RedirectToAction("Index", "Home");

        }
        return View();

    }

但文本框包含以前的值。它是如何保值的?有什么办法可以避免吗?

谢谢

【问题讨论】:

    标签: asp.net-mvc validation


    【解决方案1】:

    要删除数据,只需尝试响尾鼠发布的链接 -

    ModelState.Clear()
    

    或者你手动操作

     [HttpPost]
        public ActionResult Login(LoginModel lg)
        {
            if(ModelState.IsValid)
            {
                return RedirectToAction("Index", "Home");
    
            }
           else{
                 lg.Id = string.Empty;
                 return View(lg);
            }
    
        }
    

    【讨论】:

    • 即使没有传递模型,它也保留了价值。但是有什么办法可以避免呢?
    【解决方案2】:

    清除 ModelState 并返回没有模型的视图。

      ModelState.Clear();
      return View();
    

    模型状态

    Controller.ModelState Property

    ModelState 是 Controller 的一个属性,可以从继承自 System.Web.Mvc.Controller 的那些类中访问。 ModelState 表示在 POST 期间提交给服务器的名称和值对的集合。它还包含提交的每个值的错误消息集合。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-11
      • 2017-02-11
      • 1970-01-01
      • 2012-01-28
      • 1970-01-01
      • 2010-09-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多