3

I am using MVC4.

Validation is failing but validation error messages are not getting displayed.

This is my model.

public class Configuration
{
    public int Id { get; set; }

    [Required(AllowEmptyStrings = false, ErrorMessage = "Site name is required.")]
    [MinLength(6, ErrorMessage = "Name should be at least 6 characters.")]
    public string SiteName { get; set; }
}

Controller.

[HttpPost]
    public ActionResult Create(Configuration configItem)
    {
        if (ModelState.IsValid)
        {
            // do something.
        }
        return View("Index", configItem);
    }

View is

@model Models.SitesConfig.Configuration
@{
ViewBag.Title = "Sites Configurations";
}
<div>
    @Html.ActionLink("Sites List", "List", "SiteConfig")
</div>
@using (Html.BeginForm("Create", "SiteConfig", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
    <fieldset>
        <legend>New Satellitesite</legend>
        <div>
            @Html.LabelFor(m => m.SiteName, "Name")
            @Html.TextBoxFor(m => m.SiteName)
            @Html.ValidationMessageFor(m=>m.SiteName)
        </div>
        <br />

        <input type="submit" value="Save" />

    </fieldset>
}

Please also suggest me if there is any better way of doing the validations.

5
  • And how do you know that the validation is working if there is no error displayed? Are your talking about client or server side validation? Commented Sep 6, 2012 at 11:04
  • It is server side validation. Model.IsValid is returning false. Commented Sep 6, 2012 at 11:14
  • Your code looks fine btw. Is the view what you've shown is the Index.cshtml and you don't do anything with the ModelState collection in your controller action? Commented Sep 6, 2012 at 11:15
  • 2
    Have you referenced the Site.css in your layout? Or do you have custom styles for the validation message? Maybe the validation messages in the html output and they are just not shown... Can you check the generated html after hitting the submit? Commented Sep 6, 2012 at 11:21
  • I don't how, but it is now started showing the errors. Cleaned and built the solution again. But I am facing another problem. Commented Sep 6, 2012 at 11:39

5 Answers 5

4

I don't know what was the problem. After clean and build the application, I am able to see the error message.

Thanks, Naresh

Sign up to request clarification or add additional context in comments.

1 Comment

Same here :) .Clean+Rebuild =Solved
1

There should be @Html.ValidationSummary("Please correct the errors") in the View

1 Comment

The @Html.ValidationMessageFor(m=>m.SiteName) should be able to display a single error message for the SiteName property. Summary should not be needed.
0
@using (Html.BeginForm("Create", "SiteConfig", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
  @Html.ValidationSummary()
    <fieldset>
        <legend>New Satellitesite</legend>
        <div>
            @Html.LabelFor(m => m.SiteName, "Name")
            @Html.TextBoxFor(m => m.SiteName)
            @Html.ValidationMessageFor(m=>m.SiteName)
        </div>
        <br />

        <input type="submit" value="Save" />

    </fieldset>
}

Try this one .. @Html.ValidationSummary() helps in displaying the error messages.

Comments

0

If you try the above solutions and still didn't work, then maybe you need to format your View file. Go to Edit-Advanced-Format Document. Remember not to be in the debug mode when trying to format your file because you wouldn't see the above listed procedures if you are debugging your project.

Comments

0

Make sure your View is referencing the jQuery validations in the Scripts tag -

@section Scripts
{
    @Scripts.Render("~/bundles/jqueryval")
}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.