2015-12-01 4 views
0

AccountController.csНет данных при проведении обследований после

namespace IndividueleOpdracht.Controllers 
{ 
    public class AccountController : Controller 
    { 
     public ActionResult Login() 
     { 
      return View(new Account()); 
     } 

     [HttpPost] 
     public ActionResult Login(Account model) 
     { 
      if (!ModelState.IsValid) return View(); 

      if (model.Login()) 
      { 
       return RedirectToAction("Index", "News"); 
      } 

      return View(); 
     } 
    } 
} 

Account.cs

namespace IndividueleOpdracht.Models 
{ 
    public class Account 
    { 
     [Required] 
     public string Email; 

     [Required] 
     public string Password; 

     public bool Login() 
     { 
      if (Email == "test" && Password == "test") 
      { 
      return true; 
      } 

      return false; 
     } 
    } 
} 

Login.cshtml

@model IndividueleOpdracht.Models.Account 

@using (Html.BeginForm("Login", "Account", FormMethod.Post, new { @class = "form-signin" })) 
{ 
    <h2 class="form-signin-heading">Login</h2> 
    <label for="inputEmail" class="sr-only">Email address</label> 
    @Html.TextBoxFor(model => model.Email, new { @type = "email", @id = "inputEmail", @class = "form-control", @placeholder = "Email adres" }) 
    <label for="inputPassword" class="sr-only">Wachtwoord</label> 
    @Html.PasswordFor(model => model.Password, new { @id = "inputPassword", @class = "form-control", @placeholder = "Wachtwoord" }) 
    <div class="checkbox"> 
     <label> 
      <input type="checkbox" value="remember-me"> Onthoud mij 
     </label> 
    </div> 
    <button class="btn btn-lg btn-primary btn-block" type="submit">Login</button> 
} 

Когда я делаю пост, это говорит параметр модели пустой. Электронная почта - null, а также пароль.

ModelState.IsValid - это правда.

Может кто-нибудь сказать мне, что я делаю неправильно.

Благодаря

+0

Вы не должны указывать '@ id', MVC дает им идентификаторы автоматически. – DLeh

+0

, и вы должны использовать '@ Html.LabelFor()' вместо того, чтобы писать свой собственный – DLeh

+0

Id для ярлыков? Если я удалю идентификаторы, это устранит проблему? – yooouuri

ответ

2

Изменение вида модели класса иметь набор/получить и обнародует его свойства.

public class Account 
{ 
    [Required] 
    public string Email {set;get;}; 

    [Required] 
    public string Password {set;get;}; 

} 

Если вы не держите их свойство (с set), MVC модель связующего canno't установить значение этих свойства после чтения из посланных данных формы.

Кроме того, чтобы просмотреть сводку валидации, вы можете использовать метод Html.ValidationSummary(). Поэтому, когда проверка модели не удалась, вы увидите список ошибок проверки свойств.

@using (Html.BeginForm()) 
{ 
    @Html.ValidationSummary() 
    @Html.TextBoxFor(s=>s.Email) 
    <input type="submit" /> 
} 
+0

Спасибо, что сработало – yooouuri

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