2014-02-18 3 views
0

ViewModel이 있고 속성이 필요한 특성을 가짐으로써 모든 유효성이 검사됩니다. 양식을 제출할 때 오류 메시지가 표시되지 않습니다. 즉 이름 필드가 필요합니다.Asp.net MVC 5 ModelValidation이 작동하지 않습니다.

나는 문제가 어디에 있는지 생각했다. 그 버튼에 제출, 어떻게 그 버튼을 타격 순간에 있기 때문에 ActionList의 HttpPost 메서드를 누르십시오, 따라서 modelstate 유효성이 검사되지 않습니다.

보기 :

<h2>@ViewBag.Title</h2> 
<hr> 
<div class="well"> 
    @using (Html.BeginForm("BookingDetails", "Booking")) 
    { 
     @Html.ValidationSummary(true) 
     <div class="form-group"> 
      @Html.DisplayNameFor(m => m.FirstName) 
      @Html.TextBoxFor(m => m.FirstName, new { @class = "form-control" }) 
      @Html.ValidationMessageFor(m => m.FirstName) 
     </div> 

     <div class="form-group"> 
      @Html.DisplayNameFor(m => m.Surname) 
      @Html.TextBoxFor(m => m.Surname, new { @class = "form-control" }) 
      @Html.ValidationMessageFor(m => m.Surname) 
     </div> 
     <div class="form-group"> 
      @Html.DisplayNameFor(m => m.EmailAddress) 
      @Html.TextBoxFor(m => m.EmailAddress, new { @class = "form-control" }) 
      @Html.ValidationMessageFor(m => m.EmailAddress) 
     </div> 
     <div class="form-group"> 
      @Html.DisplayNameFor(m => m.MobileNumber) 
      @Html.TextBoxFor(m => m.MobileNumber, new { @class = "form-control" }) 
      @Html.ValidationMessageFor(m => m.MobileNumber) 
     </div> 
     <div class="form-group"> 
      @Html.DisplayNameFor(m => m.NumberOfPeople) 
      @Html.TextBoxFor(m => m.NumberOfPeople, new { @class = "form-control" }) 
      @Html.ValidationMessageFor(m => m.NumberOfPeople) 
     </div> 
     <div class="form-group"> 
      @Html.DisplayNameFor(m => m.Date) 
      @Html.TextBoxFor(m => m.Date, new { @class = "form-control" }) 
      @Html.ValidationMessageFor(m => m.Date) 
     </div> 
     <div> 
      @Html.DisplayNameFor(m => m.Time) 
      @Html.TextBoxFor(m => m.Time, new { @class = "form-control" }) 
      @Html.ValidationMessageFor(m => m.Time) 
     </div> 
    } 
    </div> 
     <div class="form-group"> 
      @Html.ActionLink("Book my table", "BookingDetails", "Booking" new { @class ="btn btn-primary" }) 
     </div> 

컨트롤러 :

// GET: 
    public ActionResult BookingDetails() 
    { 
     return View(); 
    } 

    // Post 
    [HttpPost] 
    public ActionResult BookingDetails(BookingDetailsViewModel model) 
    { 
     if(ModelState.IsValid) 
     { 
      return RedirectToAction("BookingConfirmation"); 
     } 

     return View(model); 
    } 
+0

ViewModel을 올릴 수 있습니까? –

+0

@CiganoMorrisonMendez 지금 작업하고 있습니다. 감사합니다 :) – user1781232

답변

6

당신은 내가 볼 수있는 두 가지 문제가있다.

첫 번째로 버튼은 제출 버튼이 아닙니다. 양식 외부에있는 링크입니다. 당신은 당신의 형태로 이동하고 버튼을 제출하게 (또는 클릭의 양식을 제출 일부 자바 스크립트 작성)해야합니다

또한
<div> 
     @Html.DisplayNameFor(m => m.Time) 
     @Html.TextBoxFor(m => m.Time, new { @class = "form-control" }) 
     @Html.ValidationMessageFor(m => m.Time) 
    </div> 

    <input type="submit" class="btn btn-primary" /> <!-- move it inside the form --> 
    @*   ^^^^ submit *@ 
} <!-- end of your form is here --> 

, Html.ValidationSummary(true)이 검증 요약에서 속성 모든 오류를 숨길 것이다. 이것은 당신이 원하는 것이 아닐 수도 있습니다. 해당 문제가 발생하면 호출에서 true을 제거하십시오.

+0

고마워, 그게 :) – user1781232

관련 문제