2013-04-29 1 views
6

Обязательная проверка поля не срабатывает.MVC Обязательная проверка поля не работает

Модель:

public class Client 
    { 
     [Required(ErrorMessage="Name Required")] 
     [DisplayFormat(ConvertEmptyStringToNull = false)] 
     public string Name { get; set; } 
     public string Address { get; set; } 
     public string Mobile { get; set; } 
     public string Telephone { get; set; } 
     public string Fax { get; set; } 
     public string Company { get; set; } 
    } 

Контроллер:

[HttpPost] 
     public ActionResult Create(Client client) 
     { 
      try 
      { 
       // TODO: Add insert logic here 
       ClientRepository rep = new ClientRepository(); 
       rep.AddClient(client); 
       rep.Save(); 
       return RedirectToAction("Index"); 
      } 
      catch 
      { 
       return View(); 
      } 
     } 

Вид:

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server"> 
    Create 
</asp:Content> 

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 

    <h2>Add New Client</h2> 

    <% using (Html.BeginForm()) {%> 
     <%: Html.ValidationSummary(true) %> 

     <fieldset> 
      <legend>Fields</legend> 

      <div class="editor-label"> 
       <%: Html.LabelFor(model => model.Name) %> 
      </div> 
      <div class="editor-field"> 
       <%: Html.TextBoxFor(model => model.Name) %> 
       <%: Html.ValidationMessageFor(model => model.Name) %> 
      </div> 

      <div class="editor-label"> 
       <%: Html.LabelFor(model => model.Address) %> 
      </div> 
      <div class="editor-field"> 
       <%: Html.TextBoxFor(model => model.Address) %> 
       <%: Html.ValidationMessageFor(model => model.Address) %> 
      </div> 

      <div class="editor-label"> 
       <%: Html.LabelFor(model => model.Mobile) %> 
      </div> 
      <div class="editor-field"> 
       <%: Html.TextBoxFor(model => model.Mobile) %> 
       <%: Html.ValidationMessageFor(model => model.Mobile) %> 
      </div> 

      <div class="editor-label"> 
       <%: Html.LabelFor(model => model.Telephone) %> 
      </div> 
      <div class="editor-field"> 
       <%: Html.TextBoxFor(model => model.Telephone) %> 
       <%: Html.ValidationMessageFor(model => model.Telephone) %> 
      </div> 

      <div class="editor-label"> 
       <%: Html.LabelFor(model => model.Fax) %> 
      </div> 
      <div class="editor-field"> 
       <%: Html.TextBoxFor(model => model.Fax) %> 
       <%: Html.ValidationMessageFor(model => model.Fax) %> 
      </div> 

      <div class="editor-label"> 
       <%: Html.LabelFor(model => model.Company) %> 
      </div> 
      <div class="editor-field"> 
       <%: Html.TextBoxFor(model => model.Company) %> 
       <%: Html.ValidationMessageFor(model => model.Company) %> 
      </div> 

      <p> 
       <input type="submit" value="Create" /> 
      </p> 
     </fieldset> 

    <% } %> 

    <div> 
     <%: Html.ActionLink("Back to List", "Index") %> 
    </div> 

</asp:Content> 
+0

** [Почему на стороне сервера проверки, а не на стороне клиента] (http://stackoverflow.com/a/16245682/2007801) ** – 2013-05-01 20:13:07

+1

@ user2007801 Просто для записи, вы никогда не должны доверять пользователю вход. Проверка на стороне клиента может быть заблокирована с помощью манипуляции и т. Д., Поэтому проверка на стороне сервера всегда необходима. – Oscar

ответ

14

Использование ModelState.IsValid р roperty

public ActionResult Create(Client client) 
{ 

    if(ModelState.IsValid) 
    { 
    // TODO: Add code here 
     ClientRepository rep = new ClientRepository(); 
     rep.AddClient(client); 
     rep.Save(); 
     return RedirectToAction("Index"); 
    } 
    return View(client); 
} 
+0

Я думаю, что это не ответ. Это другой способ проверки полей. – hasanaydogar

+1

Я так не думаю. – adatapost

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

  • Нет связанных вопросов^_^