web-dev-qa-db-ja.com

Url.action()を使用して動的なJavaScript値を渡す

誰もがUrl.action()を使用して動的な値を渡す方法を教えてください。

何かのようなもの、

var firstname="abc";
var username = "abcd";
location.href = '@Html.Raw(@Url.Action("Display", "Customer", new { uname = firstname ,name = username}))';

firstname、usernameはUrl.action()メソッド内で参照されません。

Url.action()を使用してこれらの動的な値を渡す方法は?

54
Kokila

@Url.Action()メソッドはserver-sideで処理されるため、client-side値をパラメーターとしてこの関数に渡すことはできません。 client-side変数は、このメソッドによって生成されたserver-side URLと連結できます。このURLは出力上の文字列です。次のようなものを試してください:

var firstname = "abc";
var username = "abcd";
location.href = '@Url.Action("Display", "Customer")?uname=' + firstname + '&name=' + username;

@Url.Action("Display", "Customer")server-sideで処理され、残りの文字列はclient-sideで処理され、server-sideメソッドの結果とclient-sideが連結されます。

121
Felipe Oriani

この回答は、質問に完全に関連しているとは限りません。ただし、問題は解決します。この要件を達成するこの簡単な方法を見つけました。コードは以下になります:

<a href="@Url.Action("Display", "Customer")?custId={{cust.Id}}"></a>

上記の例では{{cust.Id}}はAngularJS変数です。ただし、JavaScript変数に置き換えることができます。

このメソッドを使用して複数の変数を渡そうとしませんでしたが、必要に応じてUrlに追加できることを期待しています。

4
Dash

私の場合、次のことを行うだけでうまくいきました。

コントローラー:

[HttpPost]
public ActionResult DoSomething(int custNum)
{
    // Some magic code here...
}

アクションなしでフォームを作成します。

<form id="frmSomething" method="post">
    <div>
        <!-- Some magic html here... -->
    </div>
    <button id="btnSubmit" type="submit">Submit</button>
</form>

フォームにアクションを追加した後、ボタンクリックイベントを設定して送信をトリガーします。

var frmSomething= $("#frmSomething");
var btnSubmit= $("#btnSubmit");
var custNum = 100;

btnSubmit.click(function()
    {
        frmSomething.attr("action", "/Home/DoSomething?custNum=" + custNum);

        btnSubmit.submit();
    });

これがバトスに役立つことを願っています!

0
Oss Silva

最も簡単な方法は次のとおりです。

  onClick= 'location.href="/controller/action/"+paramterValue'
0