javascript参数在当前上下文中不存在

时间:2013-09-28 13:32:00

标签: javascript asp.net-mvc

为什么这不起作用?我怎么能宣布这些?考虑topicid将是一个int,topicname将是一个字符串。

function changetotopicdetail(topicid, topicname) {
    $('#loadingAjaxs').show();
    $('#flubestext').hide();
    $('#contentwrap').load('@Url.Action("Detail", "Topics", new { @id = topicid,  @namespace = topicname, @Forum = "all", @page = 0})', function () { 
    $('#loadingAjaxs').hide();
   $('#flubestext').show(); 
   window.history.pushState(null, 'title', '/topics');
   })
}

感谢

1 个答案:

答案 0 :(得分:7)

根据@alxndr的提示,this question有同样的错误,它用以下代码解决:

function changetotopicdetail(topicid, topicname) {
    $('#loadingAjaxs').show(); 
    $('#flubestext').hide();

    var link = '@Url.Action("Detail", "Topics", new { @id = -1,  @namespace = -2, @Forum = "all", @page = 0})';

    link = link.replace("-1", topicid);
    link = link.replace("-2", topicname);

    $('#contentwrap').load(link, function () { 
        $('#loadingAjaxs').hide();
        $('#flubestext').show(); 
        window.history.pushState(null, 'title', '/topics'); 
    });
}

您错误的是您正在尝试在Razor - view - context中访问两个JavaScript变量(topicidtopicname)。 Razor无法访问它,因此这两个变量是未知的。代码正在做的是在JavaScript变量上打印@Url.Action结果,然后在JavaScript中(您可以访问这些参数)替换链接 joker chars -1-2带参数。所以你得到了你需要的链接。希望我的解释清楚。