Vorrei passare una variabile javascript in un metodo @ Url.Action come parametro di route.Passa la variabile Javascript al valore di instradamento in MVC3
Mi piace passare la variabile javascript screenmode come parametro di percorso al metodo di azione.
Ho un modello di visualizzazione con proprietà enum ScreenMode e in base a questo i deve chiamare un'azione in Ajax. Devo anche passare una variabile javascript come parametro per il percorso.
Questo è quello che ho provato e ottenuto errore di compilazione.
Il nome 'ScreenMode' non esiste nel contesto attuale
$("#role-detail-form").submit(function (e) {
if ($(this).valid()) {
var screenMode = 0;
@{
if (Model.ScreenMode == UI.ViewModel.ScreenMode.New)
{
<text>
screenMode =2;
</text>
}
}
$.post('@Url.Action("SaveRoleDetail", new { mode=screenMode})',
$(this).serialize(), function (data) {
$("#role-detail").html(data);
$.validator.unobtrusive.parse($("#role-detail"));
});
}
e.preventDefault();
});
La mia azione è
public ActionResult SaveRoleDetail(RoleModel viewModel, ScreenMode screenMode)
{
}
Posso passare questa stringa di query nel metodo post ajax? come sarà l'url? screenMode farà parte dei parametri del post o nella stringa di query? –
Ancora meglio, potresti inserire lo ScreenMode nel tuo modello, avere un hiddenFor nella vista, quindi se vuoi cambiare il suo valore in Javascript, puoi semplicemente aggiornare il valore dell'ingresso nascosto, poi quando tutto è fatto, basta fare $ ("# form"). serialize() ;, in questo modo il metodo di azione deve solo prendere il modello di visualizzazione come parametro :) – mattytommo
Sì, sei corretto. Ora utilizzo il campo nascosto e aggiorno con Javascript. Puoi aggiungere queste informazioni sul campo nascosto come parte della tua risposta. Quindi sarà facilmente visibile e utile anche per gli altri :) –