誰もが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()を使用してこれらの動的な値を渡す方法は?
@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
が連結されます。
この回答は、質問に完全に関連しているとは限りません。ただし、問題は解決します。この要件を達成するこの簡単な方法を見つけました。コードは以下になります:
<a href="@Url.Action("Display", "Customer")?custId={{cust.Id}}"></a>
上記の例では{{cust.Id}}はAngularJS変数です。ただし、JavaScript変数に置き換えることができます。
このメソッドを使用して複数の変数を渡そうとしませんでしたが、必要に応じてUrlに追加できることを期待しています。
私の場合、次のことを行うだけでうまくいきました。
[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();
});
これがバトスに役立つことを願っています!
最も簡単な方法は次のとおりです。
onClick= 'location.href="/controller/action/"+paramterValue'