代码之家  ›  专栏  ›  技术社区  ›  Hooman Bahreini

CustomValidationAttribute的验证消息不显示

  •  0
  • Hooman Bahreini  · 技术社区  · 4 年前

    我创建了一个自定义验证属性,用于检查电话号码:

    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 不显示在 输入 框,如下所示:

    enter image description here

    只有在以下情况下才会出现此问题:

    1. 输入在 局部视图
    2. 当错误消息来自服务器时(正确显示客户端错误消息)

    *我两个都犯了这个错误。NET Framework 4.6.1和4.7.2。

    0 回复  |  直到 4 年前