5

@Url.Action メソッドで javascript 変数をルート パラメーターとして渡したいと思います。

screenmode javascript 変数をルート パラメーターとしてアクション メソッドに渡すのが好きです。

ScreenMode 列挙型プロパティを持つビュー モデルがあり、それに基づいて Ajax でアクションを呼び出す必要があります。また、ルートのパラメーターとして javascript 変数を渡す必要があります。

これは私が試したもので、コンパイルエラーが発生しました。

「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)
    {
    }
4

4 に答える 4

7

Javascript 変数を組み込むには、それを分割してクエリ文字列を自分で作成する必要があります。

このようなものが必要です:

$.post('@(Url.Action("SaveRoleDetail"))?screenMode=' + screenMode)

編集:おそらくベスト プラクティスですが、モデルに ScreenMode 変数を格納してから、ビューに HiddenFor を配置する必要があります。次に、Javascript で値を変更するたびに、非表示の入力の値を更新するだけです。これにより、アクション メソッドはビュー モデルをパラメーターとして受け取るだけで済みます。JavaScript でフォームを投稿している場合$("#form").serialize()、post 呼び出し内で呼び出してすべてのデータを送り返すことができます。

于 2013-01-09T10:48:35.027 に答える
0

T4MVC と jQuery を使用する場合は、次のようにして ActionResult を呼び出すことができます。

コントローラーで:

public ActionResult SaveRoleDetail(RoleModel viewModel, ScreenMode screenMode)
{
}

ビューで:

    $.post("@Url.Action(MVC.Home.SaveRoleDetail())", { viewModel: param1, screenMode: param2) }, function (data) {

        //Do Work

    });
于 2013-01-09T11:56:41.457 に答える