链接到另一个控制器与热毛巾和durandal

时间:2013-03-31 16:16:52

标签: asp.net-mvc-4 durandal hottowel

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

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

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

我在我的spa html页面中输入了如下代码:

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

这将更改浏览器中的网址,但始终会重新加载水疗中心的默认html网页。如果我点击浏览器中的刷新按钮,那么是否会转到正确的页面。

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

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

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

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

1 个答案:

答案 0 :(得分: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;