3

我正在开发一个带有多个 spa 的 mvc4 应用程序。

我正在为我的水疗中心使用热毛巾模板。

我想要做的是在我的视图中有一个用于 spa 的锚链接转到另一个控制器的 index 操作,这样我的用户就可以退出一个 spa 并打开另一个。并非所有操作都会启动 spa,有些是常规的 mvc 样式页面。

我在我的 spa html 页面中放置了如下代码:

<a href="/controller/action">Navigate to another controller</a>

这将更改浏览器中的 url,但总是重新加载 spa 的默认 html 页面。如果我点击浏览器中的刷新按钮,那么是否会转到正确的页面。

我已经能够将目标放在 _parent 或 _top 的锚标记上,例如:

 <a href="/controller/action" target="_parent">Navigate to another controller</a>

它将导航到新的控制器页面。

我相信这是 durandal 框架中的一些东西,它阻止了 spa 导航到第二个控制器,但是由于我刚刚开始使用这个,我很难过我需要改变什么。我认为应该有比在锚标签中使用目标更好的方法,或者是最好的选择。

4

1 回答 1

5

我希望我已经正确地理解了你。我相信这种行为是由我的 Sammy.js(durandal 路由器当前基于)引起的。Sammy 的默认行为是劫持所有链接并根据 SPA 本身对其进行处理。

我不喜欢我正在处理的网站的这种行为,并且需要从 SPA 中链接到其他 MVC 网页。我真正想要的是让常规链接正常工作,并将散列链接解释为指向 SPA 中另一个视图的链接。所以“/controller/action”会转到另一个网页,而“#moduleId”会转到另一个 durandal V/VM。

我找到了适合我的 Sammy 选项并将其设置在我的 main.js 中

    // This stops Sammy from hijacking regular links
    Sammy.Application.prototype.disable_push_state = true;
于 2013-04-01T19:50:26.087 回答