1

我试图在我的项目中做登录表单。

这是我的控制器:

 public ActionResult Index()
 {
    return View();
 }
 [HttpPost] 
 public ActionResult Index(UserModels model)
 {
     if (ModelState.IsValid)
     {
        if (model.IsValid(model.UserName, model.Password))
        {
          FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
          return RedirectToAction("Introduction", "Home");
        }
        else
        {
          ModelState.AddModelError("", "The user name or password provided is incorrect.");
        }
    }
    return View(model);
 }

这是我的模型:

 [Required(ErrorMessage = "*")]
 public string UserName { get; set; }
 [Required(ErrorMessage = "*")]
 public string Password { get; set; }
 [Display(Name = "Remember me?")]
 public bool RememberMe { get; set; }

 public bool IsValid(string _username, string _pwd)
 {
    EMP context = new EMP();
    var _userLogin = from u in context.tblEmployees
                     where u.UserName == _username &&
                     u.Password == _pwd
                     select u;
   if (_userLogin != null)
   {
      return true;
   }
   else
   {
      return false;
   }
 }

这是我的观点:

<div>
  <% using (Html.BeginForm()) { %>
    <div style="position:relative; top:302px; vertical-align:middle;">
      <%: Html.TextBoxFor(m => m.UserName, new { @id = "txtUsername", size = "25" })%>
      <%: Html.ValidationMessageFor(m => m.UserName)%>
    </div>

    <div>
      <%: Html.PasswordFor(m => m.Password, new { @id = "txtPassword", size = "25" })%>
      <%: Html.ValidationMessageFor(m => m.Password) %>
    </div>

    <div>
      <input id="btnLogin" type="submit" value="LOGIN" />
    </div>
    <div style="position:relative; top:415px; vertical-align:middle;">
      <%: Html.ValidationSummary(true, "Login was unsuccessful. Please correct the errors and try again.")%>
    </div>
   <% } %>
</div>

但是当我在我的视图中输入了有效的用户名和密码,然后按下按钮提交时,调试 ModelState.IsValid 总是假的。

有人对这个问题有任何想法吗?请分享。

谢谢。

4

2 回答 2

3

不确定您的错误的原因是什么。但是在这种情况下,为了调试,我编写了一个ELSE部分并通过检查 ViewData.ModelState.Values集合来检查模型错误是什么。

if (ModelState.IsValid)
{    
   //Do whatever you want with the valid Model    
}
else
{
    // Let's inspect what error message it is
   foreach (var modelStateValue in ViewData.ModelState.Values)
   {         {
      foreach (var error in modelStateValue.Errors)
      {
         //Use breakpoints and Let's check what it is in these properties
          var errorMessage = error.ErrorMessage;
          var exception = error.Exception;
      }
   }
}
于 2012-07-22T15:32:14.727 回答
1

是您手动设置tetbox的ID吗?

TextBoxFor 呈现为带有 ID 属性前缀的 HTML

<%: Html.TextBoxFor(m => m.UserName, new { @id = "txtUsername", size = "25" })%>

尝试不使用“@id = “txtUsername””。

于 2012-07-25T09:34:38.460 回答