次のボタンがあるとしましょう
<button id="CopyUsersRolesButton" type="button" onclick="CopyUsersRoles()" data-url="@Url.Action("CopyUsersRoles", "Index", new {userId = "0" })">
Copy Users Roles</button>
次のアクションで返されるビューにリダイレクトしたい:
public ActionResult CopyUsersRoles(int userId)
{
var model = new CopyUsersRolesViewModel
{
SelectedUserId = userId
};
return View(model);
}
javascript変数(SelectedUserId
)をアクションに渡す必要があります。
私がそれを機能させる唯一の方法は、URL.Actionメソッドにプレースホルダーを保持し、次のように置き換えることです。
function CopyUsersRoles() {
var url = $('#CopyUsersRolesButton').data('url');
window.open(url.replace('0', SelectedUserId));
return false;
}
これは私にとって非常にハッキーだと感じます、よりクリーンな解決策はありませんか?現在、htmlページにフォームがありません。他のすべてのボタンには、Jquery UIアイコンがあるため、入力ボタンの使用は避けたいと思います(jQuery UIボタンアイコンを入力ボタンに追加する方法を参照してください)。