ValidationMessage not showing in custom asp.net mvc 2 editortemplate
I'm having trouble adding a validationmessage to my custom editortemplate, this is the line I am using (I've tried posting the entire template code but having no luck)
<%= Html.ValidationMessage(ViewData.ModelMetadata.PropertyName) %>
If I put the validationmessage for t开发者_开发问答he model property outside of the template it works fine so I know the modelerror exists.
Any ideas?
I have an answer for you :)
You need to prefix the key of your property with the name of the property in the model.
For example, if your model looks like this:
public class MyModel
{
public ChildModel Child { get; set; }
}
And you want to add an error message that the Child's template can see, you need to prefix the key of the error message as follows:
ModelState.AddModelError("Child.SomeKey", "Error message");
In your template view of ChildModel, display the error like this:
<%= Html.ValidationMessage("SomeKey")%>
I use the strongly-typed html helpers.
Example
<div class="editor-label"><%= Html.LabelFor(model => model); %></div>
<div class="editor-field"><%= Html.TextBoxFor(model => model); %></div>
<div class="editor-error"><%= Html.ValidationMessageFor(model => model); %></div>
You could do the same thing without the strongly-typed helpers by using the Model ViewPage/Control property.
精彩评论