ASP.NET MVC REAVENTICARESUMMARY مع ExcludePropertyErrors = صقل يجعله فارغًا إذا كان النموذج غير صالح

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

سؤال

لنفترض أن لديك صحة قياسية:

<%: Html.ValidationSummary(excludePropertyErrors: true) %>

إذا كانت النموذجية تحتوي على أخطاء نموذجية للخصائص ولكن ليس للنموذج نفسه ، فإن التحقق من صحة HTML التالية:

<div class="validation-summary-errors"><ul><li style="display:none"></li></ul></div>

التي يتم عرضها كقائمة فارغة ولكنها لا تزال مرئية بسبب الحدود الحمراء حول القائمة. يبدو أن هذا خطأ بالنسبة لي. هل يمكنني إيقاف تشغيل أن المساعد الذي تم التحقق منه في صحة سيقدم قائمة فارغة؟

هل كانت مفيدة؟

المحلول

على غرار إجابة USR ، قمت بإصلاح هذا بما يلي:

public static IHtmlString FixedValidationSummary(this HtmlHelper htmlHelper)
{
    return htmlHelper.FixedValidationSummary(false);
}

public static IHtmlString FixedValidationSummary(this HtmlHelper htmlHelper,
    bool excludePropertyErrors)
{
    var result = htmlHelper.ValidationSummary(excludePropertyErrors);
    return result == null || result.ToString().Contains("display:none") ? null : result;
}

وبهذه الطريقة ، ليس عليّ أن أتخلى عن الأصل.

متفق عليه ، رغم ذلك ، هذا مزعج للغاية.

نصائح أخرى

بعد أن اكتشفت أنه لا يوجد حل من خلال النظر إلى المصدر ، قمت بحل المشكلة عن طريق رفع إصدار MVC من الكود وتعديل سطر واحد.

هناك تباين آخر في الإصلاح مع فئات bootstrap هو:

public static class ValidationSummaryExtensions
{
    public static MvcHtmlString CleanValidationSummary(this HtmlHelper htmlHelper, bool excludePropertyErrors, string message = null)
    {
        if(htmlHelper == null) throw new ArgumentNullException("htmlHelper");

        MvcHtmlString validationSummary = null;
        if (htmlHelper.ViewData.ModelState.ContainsKey(string.Empty))
        {
            var htmlAttributes = new { @class = "alert alert-danger" };
            validationSummary = htmlHelper.ValidationSummary(excludePropertyErrors, message, htmlAttributes);
        }

        return validationSummary;
    }
}

حل بديل آخر هو نقل الأسلوب إلى Div. ها هي CSS:

div.validation-summary-valid {
    display: none;
}

عندما يعود الملخص دون أي أخطاء ، لا يتم عرض DIV. عندما تكون هناك أخطاء ، يتم تغيير الفئة تلقائيًا إلى أخطاء التحقق من الصحة.

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