Javascript 在MVC中的纯Html元素上使用@Html.ValidationMessageFor或其他验证(自定义消息)

Javascript 在MVC中的纯Html元素上使用@Html.ValidationMessageFor或其他验证(自定义消息),javascript,jquery,html,asp.net-mvc,validation,Javascript,Jquery,Html,Asp.net Mvc,Validation,因为我使用了一个名为select2的插件,所以我需要在我的应用程序中用纯Html(因此没有任何帮助程序)定义选择列表,如下所示: @foreach(var top in((列表)ViewBag.TopIds)。其中(top=>top.MainTopic==null)) { @头名 foreach(顶部的var子主题。子主题) { @副标题.名称 } } 正如您所看到的,需要选择1个元素,这就是我设置“required”属性的原因 验证发生在表单提交时,当列表中未选择任何内容时,验证不会通过。

因为我使用了一个名为select2的插件,所以我需要在我的应用程序中用纯Html(因此没有任何帮助程序)定义选择列表,如下所示:


@foreach(var top in((列表)ViewBag.TopIds)。其中(top=>top.MainTopic==null))
{
@头名
foreach(顶部的var子主题。子主题)
{
@副标题.名称
}
}
正如您所看到的,需要选择1个元素,这就是我设置“required”属性的原因

验证发生在表单提交时,当列表中未选择任何内容时,验证不会通过。不过,我想在对字段进行验证时设置一条自定义错误消息

通常您会使用helper
@html.ValidationMessageFor()
,但这似乎不适用于这个纯html控件。您可以看到选择列表绑定到my ViewModel中的属性“TopicIds”

我试过这样做:
@Html.ValidationMessageFor(model=>model.TopicIds)
,我得到的唯一消息是默认的“this field is required”,奇怪的是,只有在定义了这个帮助程序时

如何自定义此邮件?我已经研究了一段时间,尝试了各种JavaScript之类的解决方案,但似乎没有什么改变消息,我总是得到“这个字段是必需的”


有人知道怎么做吗?我正在ASP.NET MVC 4 web应用程序中使用所有这些功能。

在您的ViewModel中注释属性

[Required(ErrorMessage = "My Custom Message")]
public string Id {get;set;}

那么您就可以
Html.ValidationMessageFor

这个github存储库就是您提到的select2插件吗我试过这个,但不起作用。如果我没有为
指定所需的属性,则根本不会进行验证。当我指定必需的属性时,我会得到标准的“This field is required attribute”(此字段是必需的属性)。我似乎无法更改它…我怀疑您看到的必需消息是由浏览器生成的。如果从HTML元素中删除了必需的属性,并在服务器POST操作中执行标准的ModelState.IsValid检查,则几乎可以肯定,在视图重新呈现时,回发之后会看到正确的消息。要使用客户端不引人注目的验证,您需要编写方法,允许您手动向元素添加正确的data-*属性。
[Required(ErrorMessage = "My Custom Message")]
public string Id {get;set;}