2012-03-27 2 views
2

ich auf einer MVC3 Anwendung arbeitete und ich brauche den Stil der ValidatioSummary Nachricht zu ändern, dies zu tun, habe ich meinen eigenen HTM-Helfer, der wie folgt lautet:angepasst Validation HTML-Helfer nicht auf Client-Seite funktionieren

public static MvcHtmlString MyValidationSummary(this HtmlHelper helper){ 

    string retainHtml +=""; 
    int counterror = 0; 
    if (helper.ViewData.ModelState..IsValid) 
    { 
     TagBuilder tag = new TagBuilder("div"); 
     tag.Attributes.Add("class", "validation-summary-valid"); 
     tag.Attributes.Add("data-valmsg-summary", "true"); 
     tag.InnerHtml += "<span> There was" + countererror + "errors found<ul><li></li></ul>" 
     retainHtml += tag.ToString(); 

     return MvcHtmlString.Create(retainHtml); 
    } 

    if (!helper.ViewData.ModelState.IsValid) 
    { 
     TagBuilder tag = new TagBuilder("div"); 
     tag.Attributes.Add("class", "validation-summary-errors"); 
     tag.Attributes.Add("data-valmsg-summary", "true"); 
     retainHtml +="<div class='validation-summary-errors'><span>"; 
     counterror = 1; 
     string temretainhtml =""; 

     foreach (var key in helper.ViewData.ModelState.keys) 
     } 
      foreach (var err in helper.ViewData.ModelState[key].Errors) 
       temretainhtml += "<li>Error " + countererror++ + " : " + err.ErrorMessage + "</li>"; 
     } 

     retainHtml += "Error ! there was " + --countererror + " errors found"; 
     retainHtml += "</span>"; 
     retainHtml += "<ul>"; 
     retainHtml += temretainhtml; 
     retainHtml += "</ul></div>"; 
     } 
    return MvcHtmlString.Create(retainHtml); 
    } 
    } 
} 

Diese mit Server-Seite Validierung perfekt funktioniert, aber ich brauche auch diese Art auf der Client-Seite Validierung implementieren, gerade jetzt, die Formen der Validation auf der Oberseite der Seite, auf Client-Seite angezeigten Aber mit dem Standard-MVC-Format, nicht dem, das ich in meinem HTML-Helfer angegeben habe, habe ich leider viel recherchiert Ich hatte kein Glück, kann ich Änderungen in der Datei jquery.validate.unobtrusive.js vornehmen müssen, um diese Änderungen zu übernehmen? Oder muss ich eine andere Validierungsdatei in jquery erstellen? Meine Erfahrung in jQuery ist sehr schlecht und ich bin im Moment sehr verloren, jede Hilfe, die Sie mir bitte geben können, wird es wirklich geschätzt.

Vielen Dank !!!

+0

wenn Sie Rasiermesser in Ihrer Ansicht verwenden Ich denke, Sie können steuern, wo und wie Sie das Validierungslabel –

+0

ich tun möchten, am Anfang des Formulars verwende ich meine eigenen Helfer @ Html.MyValidationSummary() direkt nach dem @ using (Html.BeginForm()) aber immer noch funktioniert nicht auf der Client-Seite, wird nur aufgerufen, wenn die Validierung durchgeführt wird die serverseite, irgendwelche ideen? – Cacharry

Antwort

1

Späte Antwort: Die jquery.validate.unobtrusive.js ist schwer zu Haken in. Statt die Datei zu modifizieren (nie ideal) versuchen Sie dies:

auf das folgende Ereignis Anhören

form.bind("invalid-form.validate", handler... 

Und dann dann Ihre eigene Zusammenfassung bauen:

form.bind("invalid-form.validate", function (evt, validator) { 
    var container = $(this).find("[data-valmsg-summary=true]"); 
    var list = container.find("ul"); 

    if (list && list.length && validator.errorList.length) { 
     list.empty(); 
     container.addClass("validation-summary-errors").removeClass("validation-summary-valid"); 

     $.each(validator.errorList, function() { 
      $("<li style='color:#00aa00'/>").html(this.message).appendTo(list); 
     }); 
    } 
}); 
+0

Vielen Dank für die Zeit der Antwort !!, es hat funktioniert !! meine Frage ist jetzt, ist es möglich, das Format der Fehlermeldung zu ändern ?, ich meine, wenn ich es zu meiner benutzerdefinierten Nachricht ändern möchte, wenn ich ValidationMessageFor innerhalb des Formulars verwende und ein Präfixformat wie, Fehler 1: " Im Modell vordefinierte Nachricht "ist das möglich? – Cacharry

Verwandte Themen