Frage

Ich mache eine Website mit ASP.NET MVC. Ich habe die folgende Eingabe versteckt definiertem:

<%=Html.Hidden("inputHiddenSelectedMenuId") %>

Und ich seinen Wert in dieser js Funktion:

function SetSelectedMenu(id) {
     $('#inputHiddenSelectedMenuId').val(id);         
 }

Nach einem Make eine Postbacks in den js Funktion init Ich möchte den eingestellten Wert im Eingang versteckt verwenden, aber der Wert ist String leer.

$(document).ready(function() {

     $('div.nav > a').removeClass('active');
     var id = $('#inputHiddenSelectedMenuId').val();
     if (id != "") {
         $("#" + id).addClass('active');
     }         
 });

Kann mir jemand einen Tip geben, warum dies geschieht?

War es hilfreich?

Lösung

Sie versuchen, den Wert des Eingangs in Javascript zu lesen. Wenn Sie auf eine Schaltfläche auf einem Formular klicken und es macht einen Post zurück Ihre Seite neu geladen wird und die Javascript-Wieder läuft die Seite jedes Mal geladen wird. Wenn alles, was Sie tun, um den Wert eines Eingangs in Javascript ist Lesen Sie brauchen kein Postback auszuführen.

$('#inputHiddenSelectedMenuId').bind('click', function ()
{
     var id = $('#inputHiddenSelectedMenuId').val();
     // do stuff with it.
});

Die Klick-Funktion wird ohne Postbacks durchgeführt werden.

Nun, wenn Sie versuchen, den Inhalt des versteckten Feldes nach einem Post aus MVC zu lesen, dann ist dies eine andere Frage. Sie werden aus den Formulardaten durch Modell ziehen haben Bindung (oder direkt durch die Request.Form [] Sammlung zu lesen.

public ActionResult SomeActionToPostTo(int inputHiddenSelectedMenuId)
{
     //model binding should find the form field called inputHiddenSelectedMenuId and populate the argument in this method with it's value. If it's not an integer then just change the type of the argument to the appropriate type.
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top