ASP.NET MVC 2 RC客户端验证不工作
我似乎无法得到任何客户端验证工作的MVC 2 RC应用程序。ASP.NET MVC 2 RC客户端验证不工作
我的模型有以下几点:
public class ExampleModel
{
[Required(ErrorMessage="Test1 is required")]
[DisplayName("Test1")]
public string Test1 { get; set; }
[Required(ErrorMessage="Test2 is required")]
[DisplayName("Test2")]
public string Test2 { get; set; }
}
我的观点有以下代码:
<% Html.EnableClientValidation(); %>
<%= Html.ValidationSummary(true, "Test was unsuccessful.") %>
<% using (Html.BeginForm()) { %>
<div>
<div class="editor-label">Test1:</div>
<div class="editor-field">
<%= Html.TextBoxFor(m => m.Test1) %>
<%= Html.ValidationMessageFor(m => m.Test1) %>
</div>
<div class="editor-label">Test2:</div>
<div class="editor-field">
<%= Html.TextBoxFor(m => m.Test2) %>
<%= Html.ValidationMessageFor(m => m.Test2) %>
</div>
<p>
<input type="submit" value="Test" />
</p>
</div>
我离开这两个领域的空白,并点击测试按钮,它直开到控制器的后处理程序没有客户端验证发生。我不知道我错过了什么。
我有以下的javascript也包含在视图(不知道我是否需要它全部):
<link href="../../Scripts/jquery-1.3.2.min.js" type="text/javascript" />
<link href="../../Scripts/jquery.validate.min.js" type="text/javascript" />
<link href="../../Scripts/MicrosoftMvcValidation.js" type="text/javascript" />
任何想法,我做错了。我觉得我缺少一些简单的东西,MVC 2的文档很少。
编辑:我已经添加了链接:
<link href="../../Scripts/MicrosoftMvcJQueryValidation.js" type="text/javascript" />
而且我已经包括在我的项目的文件,我不得不对答案的链接下载。仍然没有工作。任何其他想法?
编辑:我使用Visual Studio 2008与MVC 2 RC(不是beta)和我期待的客户端验证与RC版本中工作的任何下载或张贴的例子。
好吧,我想通了......这是100%我的错。虽然有些帖子包含了我也需要的一些信息。
我感到惊讶的主要问题没有人注意到,是我的HTML包含脚本......看看我的帖子,看看你是否能看到问题。
我使用的是<link href=...
标签,而不是正确的<script src=...
标签。完全是我的错,因为我很快就没有考虑过剪切和粘贴CSS链接,只是改变了类型和文件。咄!
不管怎么说所需的正确链接:
<script src="/Scripts/jquery-1.3.2.min.js" type="text/javascript"></script>
<script src="/Scripts/jquery.validate.min.js" type="text/javascript"></script>
<script src="/Scripts/MicrosoftMvcJQueryValidation.js" type="text/javascript"></script>
一切正常即可。你肯定需要包含来自期货项目的'MicrosoftMvcJQueryValidation.js'文件,所以我提高了所有提到的文章。
尽管该文件不包括在内,但是开箱即用。如果您不是使用jQuery,你只需要使用下面的担忧包括使用Microsoft实施,这将制定出与RC盒子:
<script src="/Scripts/MicrosoftAjax.js" type="text/javascript"></script>
<script src="/Scripts/MicrosoftMvcAjax.js" type="text/javascript"></script>
<script src="/Scripts/MicrosoftMvcValidation.js" type="text/javascript"></script>
我希望我可以节省至少一人有些悲伤。 ..我仍然无法相信我怎么能搞砸包括,并没有注意到这么长时间。
再次感谢您的帮助。
你确定你包含正确的JS文件吗?因为在Phill Haack's post它附有MicrosoftMvcJQueryValidation.js
而不是MicrosoftMvcValidation.js
。
他也将在视图中ClientValidationFunction
属性:
<% ViewContext.FormContext.ClientValidationFunction
= "EnableClientValidation"; %>
虽然这不是RC,但测试版。
ASP.NET MVC 2 Release Candidate中的默认(且仅由Microsoft支持)验证系统不使用jQuery Validate。相反,它使用完全存在于MicrosoftMvcValidation.js中的新验证系统(尽管您还需要包含MicrosoftAjax.js)。
如果您想使用jQuery验证库,它将作为ASP.NET MVC Futures项目(可用here)的一部分提供,该项目是一个单独的下载,并且具有自己的适配器脚本文件。
此外,关于Html.ValidationSummary()
帮手,我认为如果您希望它具有新的客户端功能,它需要包含在表单中。如果它不在表单中,它仍然可以工作,但它只能在服务器端工作。
嗨,我必须不同意(-1)。 ASP.NET MVC RC支持(如Phill Haack在他的博客中所写)任何兼容的客户端和服务器端验证框架。对于客户端站点,它是jQuery.validate和服务器端xVal,Castle等。 Html.ValidationSummary()不需要在表单内,它可以在页面的任何位置。 – Feryt 2010-01-04 10:22:55
“支持”我的意思是“由微软支持”,我的声明是正确的。 ASP.NET MVC 2 RC中唯一的内置客户端验证提供程序用于新验证库,而不是用于jQuery。您可以插入其他库 - 它们只是不受Microsoft支持。 – Eilon 2010-01-04 18:46:52
您必须包含MicrosoftMvcJQueryValidation。JS文件:
<link href="MicrosoftMvcJQueryValidation.js" type="text/javascript" />
检查:Where is the right version of MicrosoftMvcJQueryValidation.js for MVC 2 beta 2?
下一页只是把Html.EnableClientValidation();
某处View页面。 它必须在您想要客户端验证的第一个表单之前。我更喜欢Site.Master页面。
使用ASP.NET MVC 2 RC。
当您从MVC 2 Beta更新项目时,请使用:来自MVC 2 RC源代码包(link)的/src/MvcFutures/MicrosoftMvcJQueryValidation.js
。较早的Beta版本无法在RC中使用jquery.validation正常工作。所需的JavaScript文件是:
<script src="/Scripts/jquery-1.3.2.min.js" type="text/javascript" />
<script src="/Scripts/jquery.validate.min-vsdoc.js" type="text/javascript" />
<script src="/Scripts/MicrosoftMvcJQueryValidation.js" type="text/javascript" />
MicrosoftMvcJQueryValidation.js的正确版本包含此$(文件)。就绪()函数:
// need to wait for the document to signal that it is ready
$(document).ready(function() {
var allFormOptions = window.mvcClientValidationMetadata;
if (allFormOptions) {
while (allFormOptions.length > 0) {
var thisFormOptions = allFormOptions.pop();
__MVC_EnableClientValidation(thisFormOptions);
}
}
});
在文件的结尾(在RC版本)。
''不再适用于RC。它现在是一个函数调用,请参阅:'Html.EnableClientValidation();' – Kelsey 2010-01-05 04:54:17