Was ich geschrieben habe funktioniert und bin auf der Suche nach mehr Verständnis, wenn es um Ereignisse von Javascript vs Ereignisse gefeuert zu einer MVC Aktion gefeuert kommt. Das Javascript, das ich habe, setzt einen Wert wahr oder falsch basierend auf der Schaltfläche, die gedrückt wird. Ist die Form gebunden oder ist sie nicht gebunden, handelt es sich um die Benutzeraktionen. Bei der gleichen Instanz (glaube ich) übergibt das Drücken der Taste das Formular an meinen Controller.Javascript Klick Ereignis vor MVC Aktion Anruf
Hier ist was ich beschreibe. Direkt unten ist das Formular, das ich über die Schaltfläche klicke.
@using (Html.BeginForm("RejectInsertComment", Model.controller, FormMethod.Post, new { @class = "modal-form" }))
{
<!-- form elements -->
....
@Html.HiddenFor(x => x.is_pended)
<input type="submit" class="PendLink btn btn-primary" name="Pend" value="Pend"/>
<input type="submit" class="CompleteLink btn btn-primary" name="Complete" value="Complete" />
}
Dann hier ist das Javascript, den Wert von pend umschalten.
$('.PendLink').click(function() {
$('#is_pended').val(true);
});
$('.CompleteLink').click(function() {
$('#is_pended').val(false);
});
Dies funktioniert, und ich nehme an, die Javascript Feuer zuerst auf dem Client, aber wie weiß MVC zu warten?
Interessant. Obwohl das Sinn macht. Wenn ich komplizierteres JS machen würde, sollte ich vielleicht die preventDefault Methode benutzen. Würdest du vorschlagen, dass ich das mit dem Klick-Event mache? – Jared
Aktualisiert: Dies ist eine Möglichkeit, wenn Sie das Formular nicht senden und nur eine js-Funktion ausführen möchten. Wenn Sie beide mit JS als erstes ausführen möchten, können Sie eine normale Schaltfläche anstelle einer Übergabeschaltfläche verwenden und $ ("# yourFormId") eingeben. Submit(); am ende deiner js-funktion. – FailedUnitTest