Javascript 不引人注目的jQuery不引人注目的验证不显示错误范围

Javascript 不引人注目的jQuery不引人注目的验证不显示错误范围,javascript,jquery,asp.net-mvc,Javascript,Jquery,Asp.net Mvc,我意识到在这个主题上有很多这样的帖子,我已经阅读并应用了我在这些帖子中看到的任何建议,但似乎没有任何效果。我已经有一段时间了,只是看不出错误在哪里。我希望有人能指出我看不到的东西 我有一个MVC5应用程序。客户端验证的工作原理是,如果我不填写所需内容,表单将不会发布。但是,在出现错误时,不会生成显示错误的范围标记。以下是我所拥有的: web.config <appSettings> <add key="webpages:Version" value="3.0.0.0" /&

我意识到在这个主题上有很多这样的帖子,我已经阅读并应用了我在这些帖子中看到的任何建议,但似乎没有任何效果。我已经有一段时间了,只是看不出错误在哪里。我希望有人能指出我看不到的东西

我有一个MVC5应用程序。客户端验证的工作原理是,如果我不填写所需内容,表单将不会发布。但是,在出现错误时,不会生成显示错误的范围标记。以下是我所拥有的:

web.config

<appSettings>
  <add key="webpages:Version" value="3.0.0.0" />
  <add key="ClientValidationEnabled" value="true" />
  <add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>

生成的HTML

<!DOCTYPE html>
<html lang="en">
<head>
    <link href="/css/bootstrap-3.3.5.min.css" rel="stylesheet"/>
    <link href="/content/themes/jquery-ui-bootstrap/jquery-ui-1.10.3.custom.css" rel="stylesheet"/>
</head>
<body>
    <form action="/booking/process" id="idFrmBooking" method="post">
        <input data-val="true" data-val-email="Enter a valid email address." data-val-required="Enter your email address." id="EmailAddress" name="EmailAddress" type="text" value="" />
    </form> 

    <script src="/js/jquery-1.9.1.min.js" type="text/javascript"></script>
    <script src="/scripts/jquery-ui-1.11.4.js" type="text/javascript"></script>
    <script src="/js/bootstrap-3.3.5.min.js" type="text/javascript"></script>
    <script src="/scripts/jquery-ui.unobtrusive-3.0.0.js" type="text/javascript"></script>
    <script src="/scripts/jquery.validate.min.js" type="text/javascript"></script>
    <script src="/scripts/jquery.validate.unobtrusive.js" type="text/javascript"></script>
    <script src="/scripts/jquery.inputmask/inputmask.js" type="text/javascript"></script>
    <script src="/scripts/jquery.inputmask/jquery.inputmask.js" type="text/javascript"></script>

</html>


因此,作为一个简单的测试,我在输入字段中键入nothing或无效的电子邮件地址,并且没有收到错误消息。有人吗?

您的表单不包含必要的
元素,该元素用作jQuery验证生成的消息的占位符

你需要包括

@Html.ValidationMessageFor(m => m.EmailAddress)
哪个会输出

<span class="field-validation-valid" data-valmsg-for="EmailAddress" data-valmsg-replace="true"></span>


因为您没有生成显示消息所需的元素,即使用
@Html.ValidationMessageFor(m=>m.EmailAddress)
,但是原始输入是使用@Html.TextBoxFor(m=>m.EmailAddress)生成的,这样就可以处理了吗?不,没有。它只生成
元素,而不是
元素。jQuery验证不会创建元素,它只是在元素中添加错误消息
@Html.ValidationMessageFor(m=>m.EmailAddress)
将生成必要的
占位符来显示消息OK,这真的很奇怪,因为我有另一个项目,其中没有ValidationMessageFor()调用,而我只是从TextBoxFor()调用中获得生成的跨度。这些调用是标准的HTML帮助程序,没有什么特别的。那么,您知道还有什么其他因素会影响跨度的生成吗?(请注意,输入ValidationMessageFor()确实会生成预期的结果)
TextBoxFor()
只会生成
元素。如果它们正在生成,那是因为您有其他代码。