ASP.NET MVC 2 RC客户端验证无法正常工作

Kel*_*sey 5 asp.net-mvc asp.net-mvc-validation asp.net-mvc-2

我似乎无法在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; }
}
Run Code Online (Sandbox Code Playgroud)

我的观点有以下代码:

<% 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>
Run Code Online (Sandbox Code Playgroud)

我将这两个字段留空并单击"测试"按钮,它会直接进入控制器的后处理程序,而不会发生客户端验证.我不确定我错过了什么.

我有以下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" /> 
Run Code Online (Sandbox Code Playgroud)

我有什么不妥的想法.我觉得我错过了一些简单的东西,MVC 2的文档很少.

编辑:我添加了链接:

<link href="../../Scripts/MicrosoftMvcJQueryValidation.js" type="text/javascript" />

我已将该文件包含在我的项目中,我必须从答案中的链接下载.仍然没有工作.还有其他想法吗?

编辑:我正在使用带有MVC 2 RC的Visual Studio 2008(不是测试版),我正在寻找任何可下载或发布的使用RC版本的客户端验证示例.

Mar*_*tin 7

从MVC 2 Beta更新项目时,请使用:/src/MvcFutures/MicrosoftMvcJQueryValidation.js来自MVC 2 RC源代码包(链接).较旧的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" />
Run Code Online (Sandbox Code Playgroud)

正确版本的MicrosoftMvcJQueryValidation.js包含此$(document).ready()函数:

// 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);
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

在文件的末尾(在RC版本中).


Kel*_*sey 7

好吧,我想出来了......这是我的错.虽然,有几个帖子包含了我确实需要的一些信息.

令我惊讶的主要问题没有人注意到,我的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>
Run Code Online (Sandbox Code Playgroud)

一切都有效.你肯定需要包含期货项目中的'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>    
Run Code Online (Sandbox Code Playgroud)

我希望我至少可以挽救一个人一些悲伤...我仍然无法相信我怎么能搞砸包括而没有注意到它太久了.

再次感谢你的帮助.