現在、DataAnnotations.RequiredAttributeの単純なラッパーであるカスタム属性があります(後で拡張しますが、この概念実証を今のところ機能させようとしています)。ただし、これはMVC3の目立たない検証では機能しません。
本当に、それは非常に単純な問題です。
これが私のカスタム属性です:
[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field, AllowMultiple = false)]
public class RequiredAttribute : System.ComponentModel.DataAnnotations.RequiredAttribute
{
public RequiredAttribute()
{
}
public RequiredAttribute(Type errorMessageResourceType, string errorMessageResourceName)
{
this.ErrorMessageResourceName = errorMessageResourceName;
this.ErrorMessageResourceType = errorMessageResourceType;
}
}
次に、2つのモデルプロパティを示します。1つはカスタム属性を使用し、もう1つはDataAnnotations属性を使用します。
[System.ComponentModel.DataAnnotations.Required]
public string FirstName { get; set; }
[CustomValidationAttributes.Required]
public string LastName { get; set; }
Razorコードは次のとおりです。
<p>
@Html.TextBoxFor(model => model.FirstName)
@Html.ValidationMessageFor(model => model.FirstName)
</p>
<p>
@Html.TextBoxFor(model => model.LastName)
@Html.ValidationMessageFor(model => model.LastName)
</p>
そして、これが結果の出力です:
<p>
<input type="text" value="" name="FirstName id="FirstName" data-val-required="The First Name field is required." data-val="true">
<span data-valmsg-replace="true" data-valmsg-for="FirstName" class="field-validation-valid"></span>
</p>
<p>
<input type="text" value="" name="LastName" id="LastName">
<span data-valmsg-replace="true" data-valmsg-for="LastName" class="field-validation-valid"></span>
</p>
ご覧のとおり、FirstName(DataAnnotationsを使用)はバリデーターに必要なhtml属性でレンダリングされますが、LastName(CustomValidationAttributesを使用)にはとがありませdata-val-required
んdata-val attributes
。
私は何か間違ったことをしていますか、それともこれはMVC3の目立たない検証ではサポートされていませんか?
前もって感謝します。