كيف يمكنني الحصول على صحة مخصصة تم تقديمها كسممة "بيانات-Val-XX" على جانب العميل؟
-
29-09-2019 - |
سؤال
بالنظر إلى ViewModel يشبه هذا:
public class Login {
[Required]
public string Username { get; set; }
[Required, CustomValidator]
public string Password { get; set; }
}
ورؤية مثل هذا (بناء جملة الحلاقة هنا):
@Html.TextBoxFor(f => f.Password)
أحصل على الترميز التالي:
<input type="text"
value=""
data-val-required="This field is required." />
ومع ذلك ، أود أن تتضمن أيضًا سمة "بيانات" العادة المدقق.
أريد شيئا من هذا القبيل:
<input type="text"
value=""
data-val-required="This field is required."
data-val-customvalidator="XYZ" />
كيف يمكنني تحقيق ذلك مع ASP.NET MVC 3.0؟
على سبيل المثال ، هل أحتاج إلى وضع بعض السمات الخاصة على المدقق المخصص الخاص بي؟ أو تسجيله في مكان ما؟
المحلول
حسنًا ، أنقذني MSDN (كما هو الحال في كثير من الأحيان).
http://msdn.microsoft.com/en-us/library/ff398048.aspx
لذا ، يجب عليّ أولاً إنشاء محول لسمة التحقق من الصحة:
public class CustomAttributeAdapter : DataAnnotationsModelValidator<EmailAttribute>
{
public CustomAttributeAdapter(
ModelMetadata metadata,
ControllerContext context,
CustomAttribute attribute) :
base(metadata, context, attribute)
{
}
public override IEnumerable<ModelClientValidationRule> GetClientValidationRules()
{
ModelClientValidationRule rule = new ModelClientValidationRule()
{
ErrorMessage = ErrorMessage,
ValidationType = "custom"
};
return new ModelClientValidationRule[] { rule };
}
}
(إعداد "ValityType" يجب كن أقل حالة من أجل العمل ، لأن هذا هو بعد الإصلاح الذي سيتم استخدامه كسمة HTML5-"بيانات البيانات".).
ثم كل ما أحتاج إلى القيام به هو تسجيله على application_start.
DataAnnotationsModelValidatorProvider.RegisterAdapter(
typeof(EmailAttribute),
typeof(EmailAttributeAdapter));
نتطلع إلى الكثير من المرح مع التحقق من صحة HTML5. قون
لا تنتمي إلى StackOverflow