كيف يمكنني الحصول على صحة مخصصة تم تقديمها كسممة "بيانات-Val-XX" على جانب العميل؟

StackOverflow https://stackoverflow.com/questions/4120792

سؤال

بالنظر إلى 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. قون

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top