7

I am having trouble displaying validation summary, I only want to display errors in validation summary, not beside the field. In my view i have,

    @Html.ValidationSummary()
    @Html.ValidationMessageFor(m =>m.Name)

in my controller i have

ModelState.AddModelError("Name",
                                "name is required");

Am i not supposed to get a validation error message? at the top? I don't get what i am missing...

I am also including these script files.. jquery.validate.min.js jquery.validate.unobtrusive.min.js

WingMan20-10
  • 3,594
  • 9
  • 31
  • 42

3 Answers3

30

Try

@Html.ValidationSummary(false)

so that it will not exclude property errors.

OR

Try the method @xurca linked which is to add the model error with an empty key so it is not tied to a specific property.

ModelState.AddModelError(String.Empty, "name is required");
asymptoticFault
  • 4,491
  • 2
  • 19
  • 24
  • 1
    I'm working on two projects at the same time, VS '12 and VS '13. At any rate, I had no issues in '13 with the default template, but setting TRUE to FALSE solved it for me in the '12 project (as per your post). At any rate, thanks for the post. – Mike_Matthews_II Mar 26 '15 at 14:55
2

If you custom named your field like

 @Html.TextBoxFor(model => model.Name, new {  id = "staffSearchFilterName", value = "", **Name = "staffSearchFilterName"** })

then you have to use

@Html.ValidationMessage("staffSearchFilterName")
2

If your @Html.ValidationSummary() call is in a Partial view, DON'T pass data into the partial view like this:

@Html.Partial("_YourForm", Model,  new ViewDataDictionary { { "Submit", true }})

Instead, add the key value pair to Html.ViewData collection first:

@{
    Html.ViewData.Add(new KeyValuePair<string,object>("Submit",true));
}

then call the partial view:

@Html.Partial("_YourForm", Model, Html.ViewData)

this will allow the ModelState to propagate to the partial view properly.

ErikE
  • 48,881
  • 23
  • 151
  • 196
Wei
  • 724
  • 9
  • 10