【问题标题】:MVC $.getJSON works first time on master page, then stops calling url on subsequent loadsMVC $.getJSON 第一次在母版页上工作,然后在后续加载时停止调用 url
【发布时间】:2009-12-17 08:41:58
【问题描述】:

我设置了一个 MVC 母版页,它使用 AJAX 模板和 JSON 加载动态菜单 - JSON 通过以下调用返回:

var tabList = []; //this 保存回调中的 json 数据

var getTabs = function () {
    $.getJSON('Home/TabList', null, function (json) {
        Sys.Observer.clear(tabList); 
        Sys.Observer.addRange(tabList, json); 
    });
}

if (tabList == '') { getTabs(); }

所以这会调用我的 HomeController 上的一个函数来返回 JSON:

   public JsonResult  TabList()
    {
            //get tabs
            ... //call code to get tabs - removed for ease of reading this question
            JsonResult jsonTabs = Json(tabItems);

            jsonTabs.JsonRequestBehavior = JsonRequestBehavior.AllowGet;

            return jsonTabs;
        }
        catch (Exception ex)
        { throw ex; }

    }

这用于以下模板: 绑定:

id="tabTemplate" sys:attach="dataview" class="sys-template grid_16 topnav" dataview:data="{{ tabList }}"

使用锚标签创建菜单项:

sys:href="{{'/' + 控制器 + '/' + 动作 + '/'}}" target="_top"

使用 JSON 对象中的属性填充菜单文本:

{{文本}}

然后我将此母版页附加到 2 个不同的 MVC 页面(“索引”和“关于”,global.asax 将我带到“索引”)

所以,这在我第一次进入页面时效果很好,并且菜单绘制正确,但是当我单击上面模板中生成的带有链接“Home/About”的 About 菜单项时,它停止工作。发生的事情是正确调用了javascript(即它调用“getTabs”函数并通过getJSON调用)但它实际上并没有击中我的控制器来获取JSON(我在控制器操作上放置了一个断点,它是在这种情况下不会被击中)。

我完全不知所措,几天来一直试图解决这个问题。任何帮助将不胜感激。

谢谢。

【问题讨论】:

    标签: asp.net-mvc getjson


    【解决方案1】:

    我想可能是因为你的.getJSON请求调用的是相对路径Home/TabList

    当您在主页上时,例如http://localhost/.getJSON 请求将调用 http://localhost/Home/TabList,正如您所说,它有效。

    但是当您在后续页面上时,例如http://localhost/Home/About .getJSON 请求将调用 http://localhost/Home/About/Home/TabList,正如您所说,这不起作用:-)

    不管怎样,尝试调用绝对路径/Home/TabList

    例如

    $.getJSON('/Home/TabList', null, function (json) {
    

    注意:开头的额外正斜杠。

    HTH,
    查尔斯

    【讨论】:

    • 这非常有效 - 非常感谢,这是一个巨大的帮助!
    猜你喜欢
    • 1970-01-01
    • 2018-01-05
    • 2020-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多