我正在创建一个基于
jQuery Mobile (Alpha 3)的
ASP.NET MVC 3应用程序,利用MVC3提供的不引人注目的验证.当页面被直接访问(Url中没有哈希)时,验证工作是完美的.但是,当您导航到页面时,jQuery Mobile使用Ajax Navigation来动态加载它(在Url中显示哈希),并且验证停止工作.
以下是正在使用的代码示例:
模型:
[required(ErrorMessage = "Missing value")] [displayName("Property display Name")] public int? PropertyName { get; set; }
查看(剃须刀):
@Html.LabelFor(model => model.PropertyName) @Html.TextBoxFor(model => model.PropertyName) @Html.ValidationMessageFor(model => model.PropertyName)
生成的HTML:
<label for="PropertyName">Property display Name</label> <input data-val="true" data-val-number="The field Property display Name must be a number." data-val-required="Missing value" id="PropertyName" name="PropertyName" type="text" value="" /> <span class="field-validation-valid" data-valmsg-for="PropertyName" data-valmsg-replace="true"></span>
以前可能已经加载了其他页面,并且HTML元素不再具有唯一的ID.除了滚动我自己的Html Helper类以生成Label,TextBox和ValidationMessage的HTML,是否有任何方法来处理这种情况?
解决方法
我在这个同样的问题上一直在努力,但是@Zote指出我正确的方向.
parse()是要走的路,但是确保通过选择器ie:
jQuery.validator.unobtrusive.parse("form")
要么
jQuery.validator.unobtrusive.parse(document)
挂钩的最好方法可能是通过JQMspageshow
事件.这将在每次新的页面转换之后被触发,像这样,您也可以更喜欢在jqm在页面上完成它的魔力以及使用pagebeforeshow事件
$('div').live('pageshow',function(event){ jQuery.validator.unobtrusive.parse(".ui-page-active form"); });
原文地址:https://www.jb51.cc/aspnet/246607.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。