2010-08-12 3 views
5

Ich habe zwei Schaltflächen in einem einzigen Formular. Einer wird verwendet, um das Formular zu senden, während der andere verwendet wird, um zu suchen. Ich möchte nicht, dass der Suchknopf eine serverseitige oder clientseitige Validierung auslöst.Wie kann ich in ASP.NET MVC 2 "causesvalidation = false" ausführen?

Wie kann ich das tun?

Danke.

bearbeiten

ich auf dem Server Daten Anmerkungen bin mit zu validieren, Beispiel:

[Required(ErrorMessage = "Institution is required")] 
    [Range(1, 2, ErrorMessage="Please select an institution")] 
    [DisplayName("Institution")] 
    public int InstitutionId { get; set; } 

Und auf dem Client verwende ich das:

<% Html.EnableClientValidation(); %> 
+0

Wo? Müssen Sie Javascript und C# deaktivieren? Was verwenden Sie jetzt zur Validierung? FluentValidation, MVC2-Modellbinder, Datenanmerkungen, IDataError? Handbuch? – jfar

+0

Aktualisiert ursprünglichen Beitrag, danke. – Mike

Antwort

5

Deaktivieren Sie die clientseitige Validierung für Ihre Suchschaltfläche, fügen Sie ein Skript wie dieses zu Ihrer Seite hinzu:

<script type="text/javascript"> 
    document.getElementById("searchButton").disableValidation = true; 
</script> 

Die clientseitige Validierung wird nicht ausgeführt, wenn die auslösende Schaltfläche ein Feld namens "disableValidation" aufweist, das als wahr ausgewertet wird.

Auf der Serverseite ist Ihre Frage etwas schwieriger zu beantworten, da alles davon abhängt, ob und wie Sie Modellbindung machen und was Ihre Controller-Methode tut, wenn jemand auf diese Suchschaltfläche klickt. Eine Option könnte sein, nur die Fehler alle von Model zu räumen ... hier ist ein Verfahren, das zu tun:

private static void ClearErrors(ModelStateDictionary modelState) 
{ 
    foreach (var key in modelState.Keys) 
    { 
     modelState[key].Errors.Clear(); 
    } 
} 

Wenn Sie einige Beispiel-Code von Ihrem Controller zu veröffentlichen, kann ich versuchen, eine bessere Antwort zu geben.

Verwandte Themen