Asp.net mvc 3 使用javascript参数更改按钮单击时的视图

Asp.net mvc 3 使用javascript参数更改按钮单击时的视图,asp.net-mvc-3,Asp.net Mvc 3,假设我有下面的按钮 <button id="CopyUsersRolesButton" type="button" onclick="CopyUsersRoles()" data-url="@Url.Action("CopyUsersRoles", "Index", new {userId = "0" })"> Copy Users Roles</button> 我需要将javascript变量(SelectedUserId)传

假设我有下面的按钮

<button id="CopyUsersRolesButton" type="button" onclick="CopyUsersRoles()" data-url="@Url.Action("CopyUsersRoles", "Index", new {userId = "0" })">
                  Copy Users Roles</button>   
我需要将javascript变量(
SelectedUserId
)传递给操作

我让它工作的唯一方法是在URL.Action方法中保留一个占位符,并按如下方式替换它:

function CopyUsersRoles() {
    var url = $('#CopyUsersRolesButton').data('url');
    window.open(url.replace('0', SelectedUserId));       
    return false;
}

这让我感觉很不舒服,没有更干净的解决方案吗?我目前在html页面上没有表单,希望避免使用输入按钮,因为所有其他按钮都有Jquery UI图标(请参阅)。

我认为您做得对,因为您正在向新请求发送javascript变量。如果您不想使用button,那么您可以使用任何HTML控件,因为使用javascript/jquery,您可能会触发将向服务器请求新视图的事件。您可以改为使用
,还是表单在其他地方提交?@AJ我不想使用,因为很遗憾,无法使用jquery UI图标来设置按钮的样式
function CopyUsersRoles() {
    var url = $('#CopyUsersRolesButton').data('url');
    window.open(url.replace('0', SelectedUserId));       
    return false;
}