JavaScript参数在当前上下文中不存在。

4
为什么这不起作用?如何声明它们?考虑到topicid将是一个整数,而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');
   })
}

谢谢


在这里查看答案:https://dev59.com/pWkw5IYBdhLWcg3woMFD - alxndr
我不明白那与我的问题有什么关联? - mxadam
@alxndr发布了一个与你的问题完全相关的问题...这是你在做的同样的错误。 - DontVoteMeDown
1个回答

8

根据@alxndr的提示,这个问题有相同的错误,并且可以通过以下代码解决:

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 视图上下文中访问两个 JavaScript 变量(topicidtopicname)。Razor 无法访问它们,因此这两个变量对其来说是未知的。代码所做的事情是将 @Url.Action 的结果打印到一个 JavaScript 变量中,然后在 JavaScript 中(您可以在其中访问这些参数)用参数替换该链接中的 joker 字符 -1-2。这样就得到了您需要的链接。希望我的解释清楚明白。

@user1311546 很高兴听到这个消息!! - DontVoteMeDown

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