我在属性上有几个正则表达式的模型如下:
视图是动态视图,我正在从jquery加载其内容,如下所示:
更新:我发现了问题,但没有找到解决方案。正则表达式客户端属性未呈现,因为我使用[UIHint(“TextBox”)]添加一些自定义类和脚本。如果我删除UIHInt,则生成所有验证属性而没有任何问题。如果我添加UIHInt,则不会生成任何内容。
不确定我的UIHInt编辑器模板有什么问题。请指教???
EditorTemplate / TextBox.cshtml
@Html.TextBoxFor(m => Model, new {@class="txt"})
我的模特:
public partial class PartyRole
{
[UIHint("TextBox")]
[RegularExpression(@"^.{5,}$", ErrorMessage="Minimum 5 characters required")]
[StringLength(50, ErrorMessage="Maximum {2} characters exceeded")]
public string Title { get; set; }
}
jquery unobtrusive包含在我的捆绑包中:
bundles.Add(new ScriptBundle("~/js/jqueryval").Include(
"~/Scripts/jquery.unobtrusive*",
"~/Scripts/jquery.validate*"));
查看:
@model dynamic
@using (Html.BeginForm("Edit", null, FormMethod.Post, new { id="FrmIndex" }))
{
@Html.ValidationSummary(true);
@Html.EditorForModel()
<input type="submit" value="Edit" />
}
<script>
$(".datetime").datetime();
$(".combo").combo();
$(".chk").chk();
var form = $("#FrmIndex")
.removeData("validator") /* added by the raw jquery.validate plugin */
.removeData("unobtrusiveValidation"); /* added by the jquery unobtrusive plugin */
$.validator.unobtrusive.parse(form);
</script>
但是仍然没有在客户端生成验证。 消息是从服务器端生成的。
更新:有一些突破。这些验证在我的强类型视图中正常工作。但不是我目前在这里展示的动态视图。
有人可以告诉我在这里做错了吗?
答案 0 :(得分:1)
在自定义编辑器模板中,您应该欺骗帮助程序,使其认为它位于FormContext中,以便它在输入字段上发出HTML5 data- *属性,这些属性由不引人注意的验证使用。因此,在您的模板中添加以下内容,您就可以了:
@{
this.ViewContext.FormContext = new FormContext();
}
@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue, new { @class="txt" })