我有一個自定義屬性,目前是DataAnnotations.RequiredAttribute(我會稍後擴展它,但只是試圖讓這個概念證明現在工作)的簡單包裝。但是,這不適用於MVC3不顯眼的驗證。MVC3不顯眼的驗證不工作的自定義DataAnnotations屬性
這真是一個非常簡單的問題。
這裏是我的自定義屬性:
[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;
}
}
以下是使用自定義屬性的兩個模特屬性,一個,一個使用DataAnnotations屬性:
[System.ComponentModel.DataAnnotations.Required]
public string FirstName { get; set; }
[CustomValidationAttributes.Required]
public string LastName { get; set; }
下面是剃刀代碼:
<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>
因此,大家可以看到,名字(使用DataAnnotations)呈現與所需驗證必要的HTML屬性,但姓氏(使用CustomValidationAttributes)缺少data-val-required
和data-val attributes
。
我做錯了什麼,或者這不支持與MVC3不顯眼的驗證?
在此先感謝。
你可以在這裏找到http://stackoverflow.com/questions/6495510/mvc-2-vs-mvc-3-您的解決方案custom-validation-attributes-using-dataannotationsmodelvalidatorpr – ingo
@ingo - 雖然我很困惑。如果我沒有擴展基礎驗證,爲什麼我必須通過實現'IsValid'和'GetClientValidationRules'來「重新發明輪子」,如果這些實現已經存在並且適用於基本驗證屬性(在這種情況下爲'RequiredAttribute')? –