/ / ModelState.IsValid завжди невірно в asp.net mvc 2 - asp.net-mvc, asp.net-mvc-2

ModelState.IsValid завжди невірно в asp.net mvc 2 - asp.net-mvc, asp.net-mvc-2

Я спробував зробити журнал у формі у своєму проекті.

Ось мій контролер:

 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 завжди помилково.

Хтось має уявлення про цю проблему? Будь ласка, поділіться.

Дякую.

Відповіді:

3 для відповіді № 1

Не впевнений У чому причина вашої помилки. Але в такому сценарії для налагодження я пишу 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;
}
}
}

1 для відповіді № 2

Невже ви вручну встановлюєте ідентифікатори тетебокс?

TextBoxДля візуалізації в HTML з префіксом на атрибут ID

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

Спробуйте без "@id =" txtUsername "".