【发布时间】:2016-07-05 09:19:58
【问题描述】:
我有一个局部的两次视图。部分不使用循环并具有基本验证。
这里是部分查看代码:
<div class="col-md-4">
@Html.LabelFor(model => model.ZipCode, new { @class = "control-label " })
@Html.TextBoxFor(model => model.ZipCode, new { @class = "form-control ", tabindex = "4" })
@Html.ValidationMessageFor(model => model.ZipCode)
</div>
这是我的主视图两次调用:
<div id="homeaddress">
@if (Model == null)
{
@Html.Partial("~/Views/AddrPartial.cshtml", new Address())
}
else
{
@Html.Partial("~/Views/AddrPartial.cshtml", Model.HomeAddress)
}
</div>
<div id="mailingaddress">
@if (Model == null)
{
@Html.Partial("~/Views/AddrPartial.cshtml", new Address())
}
else
{
@Html.Partial("~/Views/AddrPartial.cshtml", Model.MailingAddress)
}
</div>
那么只有“homeadrress” div 验证有效...这是我的模型的设置方式:
public class Information
{
public Address HomeAddress { get; set; }
public Address MailingAddress { get; set; }
}
然后有一个单独的地址类...
public class Address
{
[Display(Name = "Address")]
public string Addr1 { get; set; }
[Display(Name = "Address 2")]
public string Addr2 { get; set; }
[Display(Name = "Zip Code")]
[RegularExpression(@"^\d{5}(-\d{4})?|^$", ErrorMessage = "Invalid Zip Code")]
public string ZipCode { get; set; }
}
生成的 html 显示了问题... mailingaddress html 没有检查验证所需的正则表达式..
<input class="form-control " data-val="true" data-val-regex="Invalid Zip Code" data-val-regex-pattern="^\d{5}(-\d{4})?|^$" id="ZipCode_home" name="ZipCode_home" tabindex="4" type="text" value="12345">
<span class="field-validation-valid" data-valmsg-for="ZipCode_home" data-valmsg-replace="true"></span>
<input class="form-control " id="ZipCode_mailing" name="ZipCode_mailing" tabindex="4" type="text" value="54321">
<span class="field-validation-valid" data-valmsg-for="ZipCode_mailing" data-valmsg-replace="true"></span>
查看此代码后,我的问题是为什么会发生这种情况以及如何解决此问题。在此先感谢,如果需要,我可以回答问题并提供更多代码。
【问题讨论】:
-
您是否要求为您提供电子邮件验证正则表达式?见validating email address using regular expression on razor page。
-
你为什么会认为@WiktorStribiżew
-
生成的 html 显示了问题... mailingaddress html 没有检查验证所需的正则表达式... 为什么会发生这种情况,我该如何解决这个
-
1) 它是一个物理地址,而不是电子邮件。 2)因此,它需要邮政编码验证。 3)我在提供的代码中有正则表达式验证。它适用于第一个部分实例。第二个它没有。这就是我遇到麻烦的地方。
-
如果您将部分重命名为
/Views/Shared/EditorTemplate/Address.cshtml(即,它是EditorTemplate),那么它只是@Html.EditorFor(m => m.HomeAddress)和@Html.EditorFor(m => m.MailingAddress),并且所有这些都可以正确处理(正确的前缀将添加到您的表单控件中)
标签: c# regex asp.net-mvc asp.net-mvc-4 razor