2011-07-20 39 views
0

假設我有一個模型驗證值保留早在MVC

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

    } 

但是文本框包含以前的值。它如何保留價值?有什麼辦法可以避免它?

感謝

回答

2

ModelState中保存的值。 編輯控件在渲染時引用它。

你可以嘗試尋找答案here

1

刪除的數據只是嘗試這rattlemouse已發佈的鏈接 -

ModelState.Clear() 

,或者您與

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

     } 
     else{ 
      lg.Id = string.Empty; 
      return View(lg); 
     } 

    } 
+0

即使沒有通過模型,其保留的價值。但是有什麼辦法可以避免它? –

+0

哦對不起,我誤解了你的文章...我會更新我的文章 – nWorx

0

清除做手工ModelState並返回沒有模型的視圖。

ModelState.Clear(); 
    return View(); 

的ModelState

Controller.ModelState Property

的ModelState是控制器的特性,並且可以從那些從System.Web.Mvc.Controller繼承的類訪問。 ModelState表示在POST期間提交給服務器的名稱和值對的集合。它還包含提交的每個值的錯誤消息的集合。