MVC4中的Clinetside正则表达式验证

本文关键字:验证 正则表达式 Clinetside 中的 MVC4 | 更新日期: 2023-09-27 18:25:13

我有一个带有两个正则表达式的模型,属性如下:

该视图是动态视图,我正在从jquery加载其内容,如下所示:

更新:我发现了问题,但没有找到解决方案。正则表达式客户端属性没有呈现,因为我正在使用[UHint("TextBox")]添加一些自定义类和脚本。如果我删除UIHInt,则生成所有验证属性时不会出现任何问题。如果我添加UIHInt,则不会生成任何内容。

不确定我的UIHInt编辑器模板中出了什么问题。请告知???

编辑器模板/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 unsob唐突包含在我的捆绑包中,如下所示:

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>

但是验证仍然不是在客户端生成的。消息是从服务器端生成的。

更新:获得了一些突破。这些验证在我的强类型视图中运行良好。然而,在我目前在这里展示的动态视图中并不是这样。

有人能告诉我我在这里做错了什么吗?

MVC4中的Clinetside正则表达式验证

在您的自定义编辑器模板中,您应该诱使帮助者认为它在FormContext中,这样它就可以在输入字段上发出HTML5 data-*属性,这些属性用于不引人注目的验证。所以在你的模板中放入以下内容,你就可以开始了:

@{
    this.ViewContext.FormContext = new FormContext();
}
@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue, new { @class="txt" })