开发者

implementing ValidationMessageFor

I was working on migrating MVC1 app to MVC2 today and i have come across a problem while changing the ValidationMessage to ValidationMessageFor implementation.

The below is the selectlist in my View

<%=Html.DropDownListFor(model => model.SecurityQuestions[0].Question,  "Some Security question", new { @class = "form_element_select" })%>

The below code works fine and i can see the validation message came from modelstate.

<%= Html.ValidationMessage("SecurityQuestions_0__Question")%> 

but this one does not work:

&开发者_高级运维lt;%= Html.ValidationMessageFor(model => model.SecurityQuestions[0].Question)%>

SecurityQuestions is a generic list in my model

public List<SecurityQuestion> SecurityQuestions { get; set; }

Is this somewhat a bug in "ValidationMessageFor" or am i missing something here?

I have previously asked this question on asp.net forums.


The problem is that ValidationMessageFor only uses the last property name as validation message key.

In your case this means that:

<%= Html.ValidationMessageFor(model => model.SecurityQuestions[0].Question) %>

equals

<%= Html.ValidationMessage("Question") %>

and not what you thought it would. Unfortunately in this case you will have to use the non-strong typed helper to have the whole string as it should be.


This problem is fixed in MVC V3


You can add error you want to see to ModelState, under key that is generated by ValidationMessageFor. Sure its a hack, but the fastest way to go. And it doesnt add any ugly "SecurityQuestions_0__Question" to your markup.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜