我们目前正在使用ASP.NET MVC 4创建一个项目。因为我正在使用select2插件,验证并不是那么容易。 jQuery验证中所需项目的标准消息是“此字段是必需的!”。经过几个小时的搜索,我发现了如何更改此消息。下面你可以看到我是如何改变它的,这是有用的(使用@Html.ValidationMessageFor(--property of my ViewModel--)
显示消息。这很奇怪,因为我无法显示实际的Data Annotation消息,但jQuery消息确实很幸运。
$.validator.messages = {
required: "@Resources.Question_MinOnePol"
};
这样可行,问题是我现在为每个必填字段获取相同的消息。我想根据id或类来获得不同的自定义消息。
我不知道该怎么做...希望你能给我一些如何实现这个目标的提示。
附加的:
使用select2的选择列表示例:
<select name="PoliticianIds" id="polDrop" multiple style="width: 700px" required class="select2pol required">
@foreach (var par in ((List<Party>)ViewBag.Parties))
{
<optgroup label="@par.Name (@par.FullName)">
@foreach (var pol in ((List<Politician>)par.Politicians))
{
@(ViewBag.CurrPol = pol)
<option value="@pol.UserId">@pol.FirstName @pol.LastName (@pol.Party.Name)</option>
}
</optgroup>
}
</select>
@Html.ValidationMessageFor(model => model.PoliticianIds)
使其成为select2列表的脚本:
jQuery('#polDrop').select2({
placeholder: "Selecteer een politicus...",
maximumSelectionSize: 5,
formatResult: format2,
formatSelection: format2,
escapeMarkup: function(m) {
return m;
}
});
我的ViewModel适用于所有感兴趣的人:
public class CreateQuestionModel
{
public Question Question { get; set; }
[Required(ErrorMessageResourceType = typeof(Resources.Resources), ErrorMessageResourceName = "Question_MinOnePol")]
public List<int> PoliticianIds { get; set; }
public List<int> TopicIds { get; set; }
}
如果需要,我很乐意提供任何其他细节。
答案 0 :(得分:0)
在以下StackOverflow线程中找到答案:
jQuery validation: change default error message
对不起,之前没找到它!
我是如何解决的:
$('#polDrop').rules("add", {
messages: {
required: "Politician is required!"
}
});
$('#topDrop').rules("add", {
messages: {
required: "Topic is required!"
}
});
我在jQuery中调用的id当然是我<select>
的id!