MVC Required field validation not working

34,993

Use ModelState.IsValid property

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);
} 
Share:
34,993
chamara
Author by

chamara

ASP.NET, ASP.NET MVC , Sql Server, Bootstrap, CSS and Crystal reports developer

Updated on September 10, 2020

Comments

  • chamara
    chamara almost 4 years

    Required field validation not firing.

    Model:

    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; }
        }
    

    Controller:

     [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();
                }
            }
    

    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>
    
  • hasanaydogar
    hasanaydogar over 8 years
    I think this is not the answer. This is a other way to validate fields.