2016-05-04 4 views
2

Ich habe eine von.Gibt es eine Möglichkeit, das Senden von Formularen in MVC 5 zu verhindern?

@using (Html.BeginForm()) 
{ 
// From content 
<div class="form-group btn-group"> 
       <button type="submit" class="btnPrimaryStyle btn col-sm-3 col-xs-12 pull-left">Save</button> 
      </div> 
} 

Alles funktioniert gut. Ich habe einen Dropdwon, der nicht in der Form ist. Ich möchte prüfen, ob der Dropdown-Wert ausgewählt ist, dann kann das Formular gesendet werden, andernfalls wird es nicht gesendet. Kurz gesagt, die Dropdown-Auswahl ist erforderlich und ist nicht in der Form. Ich kann den Wert von dropdwon Wetter, das ausgewählt wird oder nicht mit jquery oder Javascript überprüfen. Meine Frage ist, wie verhindere ich, das Formular zu übermitteln, wenn Wert nicht ausgewählt ist?

+1

Behandeln Sie das Ereignis formules '.submit()' und brechen Sie es gegebenenfalls ab. –

Antwort

5

Mit jquery es ist ganz einfach:

$("#your-form-id").submit(function (e) { // note that it's better to use form Id to select form 
     if($("#YourDropDownID").val() == 0 || $("#YourDropDownID").val() == '') // here you check your drop down selected value 
     { 
     e.preventDefault(); // here you stop submitting form 
     } 
} 

Id So legen Sie diese Überlastung zu Ihrem Formular:

Html.BeginForm(null, null, FormMethod.Post, new { id = "your_form_id" }) 
1

Ich denke, die meisten richtigen Weg zu handhaben ist die Validierung http://www.asp.net/mvc/overview/getting-started/introduction/adding-validation

verwenden

Markieren Sie das Feld Ihres Modells, das über die Dropdown-Liste mit dem Validierungsattribut verbunden ist. Der Vorteil dieser Methode - Sie können auf der Serverseite validieren, indem Sie ModelState.IsValid aufrufen. Die Server-Validierung funktioniert auch, wenn JavaScript deaktiviert ist.

+0

OP hat angegeben, dass die Dropdown-Liste ** nicht ** im Formular enthalten ist –

Verwandte Themen