Ste*_*fen 8 partial-views unobtrusive-validation asp.net-mvc-3
我已经设置了一个局部视图,其中包含自己的表单标记,如下所示:
<tr>
@using (Html.BeginForm("Create"))
{
<td>
@Html.TextBoxFor(model => model.Date)
@Html.ValidationMessageFor(model => model.Date)
</td>
<td>
@Html.TextBoxFor(model => model.Amount)
@Html.ValidationMessageFor(model => model.Amount)
</td>
<td>
@Html.TextBoxFor(model => model.Tags)
@Html.ValidationMessageFor(model => model.Tags)
</td>
<td>
@Html.EnumDropDownListFor(model => model.Type)
</td>
<td>
<input type="submit" value="Add" />
@Html.ValidationSummary(true)
</td>
}
</tr>
Run Code Online (Sandbox Code Playgroud)
我使用@ Html.Action("Create")在页面上渲染它(它是表格的一部分,因此是<tr>标签.
由于一些奇怪的原因,我的客户端验证不起作用,我首先看到发布时的错误.
部分视图和客户端验证有什么特别之处吗?
我已经包含以下脚本:
<script src="/Scripts/jquery.1.5.1.min.js" type="text/javascript"></script>
<script src="/Scripts/jquery.validate.min.js" type="text/javascript"></script>
<script src="/Scripts/jquery.validate.unobtrusive.min.js" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)
编辑
我只是试着把这个脚本扔到页面上:
jQuery('form').submit(function ()
{
alert(jQuery(this).valid());
});
Run Code Online (Sandbox Code Playgroud)
它警告'true',因此客户端验证脚本肯定存在,并且由于某种原因它不检查有问题的字段: - /
编辑2
我已将页面的整个源代码(HTML + JS)上传到pastebin:http://pastebin.com/GvqLW495
Jas*_*Cav 11
编辑:
我刚刚意识到,在你的代码中,你正在使用jQuery 1.5.1(我假设).NET提供了jQuery.validate.不幸的是,这两个人还没有合作.您必须前往此处以获取适用于最新jQuery 的版本(您需要使用1.4.4).如果这不起作用,我仍然建议检查下面的解决方案.
我有类似的问题(虽然我不确定这是完全相同的问题).我在这篇博文中写过关于解决方案的文章.不幸的是,我不能确定你有同样的问题,但它值得一试.
基本上,它归结为我在加载我的PartialViews之后必须调用此行(虽然我是通过AJAX加载它们,这是我认为导致问题):
$.validator.unobtrusive.parse($("#validation"));
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅博客文章.希望它可以帮助你.
我终于找到了导致它失败的原因,事实上我的部分视图位于 html 表内......
<table>
<tr>
<th>
Date
</th>
<th>
Amount
</th>
<th>
Tags
</th>
<th>
Type
</th>
<th>
</th>
</tr>
@Html.Action("Create")
</table>
Run Code Online (Sandbox Code Playgroud)
这不起作用,但是如果我将 @Html.Action 移到表标记之外,它就可以正常工作。
归档时间: |
|
查看次数: |
13571 次 |
最近记录: |