在JavaScript中将变量作为参数传递给Url.Action

7

我正在这样传递参数到 @Url.Action:

function showHistory()
{

myId= $("#id").val();
    //alert(myId);
    actionDialog.load("@Url.Action("ActionHistoryAjax", new {id = myId, sort = "abc"})", function   () {
        actionDialog.dialog('open');
    });
}

但是报错了“myId在当前上下文中不存在”。

我该如何传递变量?

我解决了这个问题,这是解决方案:

function showHistory()
{

myId= $("#id").val();
//alert(myId);
actionDialog.load("@Url.Action("ActionHistoryAjax", new {id = "_Id", sort = "abc"})".replace("_Id", DeviceID), function   ()     {
 actionDialog.dialog('open');
});
}

可能是重复问题 https://dev59.com/pWkw5IYBdhLWcg3woMFD - cat916
3个回答

8
我使用以下方法解决了这个问题:
function showHistory()
{
    myId= $("#id").val();
    actionDialog.load("@Url.Action("ActionHistoryAjax", new {id = "_Id", sort = "abc"})".replace("_Id", DeviceID), function   ()     {
        actionDialog.dialog('open');
    });
}

2

您在这里混合了服务器端和客户端代码。您不能像那样将Javascript变量传递到Url.Action方法中。

您需要这样做:

function showHistory()
{
    myId= $("#id").val();
    actionDialog.load("@Url.Action("ActionHistoryAjax", new { sort = "abc"})" + 
                      "&id=" + encodeURIComponent(myId), function   () {
        actionDialog.dialog('open');
    });
}

从服务器模型中加载该ID。

-1
old one
function showHistory()
{

  myId= $("#id").val();
  //alert(myId);
  actionDialog.load("@Url.Action("ActionHistoryAjax", new {id = myId, sort = "abc"})", 
  function   () {
    actionDialog.dialog('open');
  });
}

新的

function showHistory()
{

 myId= $("#id").val();
 //alert(myId);
    actionDialog.load("@Url.Action("ActionHistoryAjax", new {id = "+ myId +", 
     sort =    "abc"})", function   () {
     actionDialog.dialog('open');
 });
}

那样做不行。那会尝试将字符串值“+ myId +”分配给id。 - CodingIntrigue
这对我没用。字面上,我获得了文本“myId”作为id的值。 - boilers222

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接