@ Url.Actionメソッドのjavascript変数をルートパラメータとして渡したいとします。MVC3のルート値にJavascript変数を渡す
私は、actionmodeにルートパラメータとしてscreenmode javascript変数を渡すのが好きです。
私はScreenMode列挙型プロパティを持つビューモデルを持っていると はアヤックスでアクションを呼び出す必要があり、私それに基づきます。また、経路のパラメータとしてjavacript 変数を渡す必要があります。
これは私が試したことであり、コンパイルエラーです。
名「screenMode」は
$("#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();
});
現在のコンテキスト内に存在しない私の行動は、あなたがそれを分割し、クエリ文字列を自分で構築する必要があると思います
public ActionResult SaveRoleDetail(RoleModel viewModel, ScreenMode screenMode)
{
}
ポストajaxメソッドでこのクエリ文字列を渡すことはできますか?どのようにURLのように見えるのだろうか? screenModeはポストパラメータの一部またはクエリ文字列に含まれますか? –
あなたのモデルにScreenModeを置いて、hiddenForをビューに入れて、JavaScriptの値を変更したい場合は、単純に非表示入力の値を更新してから、すべて完了したら$( "#form")。serialize();このようにして、アクションメソッドはビューモデルをパラメータとして取る必要があります:) – mattytommo
はい正しいです。私は今、隠しフィールドを使用し、Javascriptで更新します。この隠しフィールドの情報をあなたの答えの一部として追加してください。だからそれは容易に目に見えるし、他の人にも役立つでしょう:) –