2013-09-09 2 views
0

Название говорит все, может ли кто-нибудь определить, что я делаю неправильно. Я пробовал перемещаться по моему резюме HTMlValidation и кучу других вещей. Я чувствую, что это может иметь что-то с представлениями, которые я возвращаю из своего класса контроллера.MVC Обязательное поле не работает

-- Model 
public class Login 
{ 
    [Required(ErrorMessage = "First Name is required")] 
    [Display(Name = "First Namex")] 
    public string FirstName { get; set; } 

    [Required(ErrorMessage = "Password is required")] 
    [DataType(DataType.Password)] 
    [Display(Name = "Passwordx")] 
    public string Password { get; set; } 
} 

    -- Controller 
[HttpPost] 
    public ActionResult Login(string FirstName, string Password) 
    { 
     if (ModelState.IsValid) 
     { 
      bool validLogin = new UserBAL().ValidateUser(FirstName, Password); 
      { 
       if (validLogin == true) 
       { 
        return RedirectToAction("Index", "Invoice"); 
       } 
       else 
       { 
        return RedirectToAction("Index"); 
        // ModelState.AddModelError("", "The user name or password provided is incorrect."); 
       } 
      } 
     } 
     return View(); 
    } 

--View 
@using (Html.BeginForm("Login", "Home")) 
{ @Html.ValidationSummary(true) 
<div> 
    <fieldset> 
     <legend>Login</legend>  
     <div class ="fields">    
      @Html.LabelFor(u => u.FirstName) 
      </div> 
      @Html.TextBoxFor(u => u.FirstName) 
      @Html.ValidationMessageFor(u => u.FirstName) <br />  

     <div class ="fields">    
     @Html.LabelFor(u => u.Password) 
     </div> 
     @Html.PasswordFor(u => u.Password) <br />     
     <input type="submit" value="Log In" /> 
    </fieldset> 
</div> 

}


[HttpPost] 
    public ActionResult Login(EIAS.Models.Login login) 
    { 
     if (ModelState.IsValid) 
     { 
      bool validLogin = new UserBAL().ValidateUser(login); 
      { 
      if (validLogin == true) 
       { 
        return RedirectToAction("Index", "Invoice"); 
       } 
       else 
       { 
        return RedirectToAction ("Index"); 
        // ModelState.AddModelError("", "The user name or password provided is incorrect."); 
       } 
      } 
     } 
     return View(); 
    } 

ответ

0

Вы должны взять модель в качестве параметра для вашего Вход действия

public ActionResult Login() 
{ 
    // This will return the view with the form that you have above 
    return View(); 
} 

[HttpPost] 
public ActionResult Login(Login login) 
{ 
    // this is what your form will post too 
    if (ModelState.IsValid) 
    { 
     bool validLogin = new UserBAL().ValidateUser(login.FirstName, login.Password); 
     { 
      if (validLogin == true) 
      { 
       return RedirectToAction("Index", "Invoice"); 
      } 
      else 
      { 
       return RedirectToAction("Index"); 
       // ModelState.AddModelError("", "The user name or password provided is incorrect."); 
      } 
     } 
    } 
    return View(); 
} 

В представлении просто

@using (Html.BeginForm()) 

Вот ссылка о MVC Razor Forms: http://blog.michaelckennedy.net/2012/01/20/building-asp-net-mvc-forms-with-razor/

Попробуйте это.

+0

ok, то как передать значения текстового поля функции моего бизнес-уровня, так как она принимает 2 аргумента, имя и пароль – CSharper

+0

Хорошо, я сделал это, и это есть то, что у меня есть. – CSharper

+0

см. мои правки выше. Имеет ли это смысл? –

5

MVC в if (ModelState.IsValid) проверки модели, и вы не получите модель в своем действии:

public ActionResult Login(string FirstName, string Password) 

изменить параметры действия на:

public ActionResult Login(Login model) 

и для проверки в клиент, проверьте:

  • если вы включили плагин проверки jquery Validation (js)
  • проверьте свой web.config, ключи ClientValidationEnabled и UnobtrusiveJavaScriptEnabled ir находятся в истинности.

check this link

0

Проблема была с моими взглядами и рассматривающей я возвращался. Я пытался использовать свой индексный указатель для проверки, я не создал вид входа в систему, поэтому, как только я это сделал, и добавила мою проверку на вид входа, он работал. Поэтому в моем вопросе Return View() не возвращал ничего

Смежные вопросы