我创建了一个自定义验证属性,用于检查电话号码:
public class PhoneNumberIsValidAttribute : ValidationAttribute
{
public override bool IsValid(object value)
{
if (value != null)
{
string phoneNumberRaw = (string)value;
Regex regex = new Regex(@"^\d{6,8}$");
Match match = regex.Match(phoneNumberRaw);
if (match.Success)
{
return true;
}
}
return false;
}
}
我为我的模型添加注释:
public class MyModel
{
[DisplayName("Override phone number")]
[PhoneNumberIsValid("Test")]
public string OverridePhoneNumber { get; set; }
}
而且
myView
:
@Html.ValidationSummary(false, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.OverridePhoneNumber)
@Html.TextBoxFor(model => model.OverridePhoneNumber, new { @class = "form-control input-text", @maxlength = GlobalConstants.MaxLengthForPhoneNumber /*, @type = "url" */})
@Html.ValidationMessageFor(model => model.OverridePhoneNumber, "", new { @class = "text-danger" })
</div>
如图所示,一切正常
this fiddle
问题就在这里
不幸的是,我不能在小提琴上演示这个问题。
如果我把
input
在…内
_MyPartialView
,并从
MyView
如下所示:
@Html.Partial("path/_MyPartialView", Model)
然后
ValidationMessage
不显示在
输入
框,如下所示:
只有在以下情况下才会出现此问题:
-
输入在
局部视图
-
当错误消息来自服务器时(正确显示客户端错误消息)
*我两个都犯了这个错误。NET Framework 4.6.1和4.7.2。