![]() |
1
0
我知道的唯一解决方案是使链接中的url绝对化,所以类似于:
但我知道这并不总是可能的。
|
![]() |
2
0
您没有提供任何与导航栏中的链接相关的html。听起来这就是问题所在。任何以下形式的链接都会触发durandal路由器:
以下形式的任何链接都将触发本机浏览器路由:
你能验证ASP.NET是如何编译你的网页源代码的吗? 编辑 另一种选择是使用javascript导航api的点击绑定:
|
![]() |
3
0
也许重新思考您的架构是最好的:
选项1:
为您打算创建的每个SPA制作完整的热毛巾项目。
选项4: 看看“HotTowelRouteConfig.cs”。在该文件中引用了一个默认的控制器和操作。您可以在默认路线前面加上“spa”,这样结果会是:
杜兰达尔:
域名/spa/#/
选项5: 看着控制器 (在“HotTowelRouteConfig.cs”中命名) ,您可以向该控制器添加一些特定操作。 选项6: 创建一个带有前缀的文件夹或其他东西的全新路由配置。 (与选项4相反)
杜兰达尔:
领域/#/
希望这能有所帮助。 |
![]() |
4
0
由于其他答案都没有被接受,我想投入0.02美元- 确保正在动态设置的路线包括相对路径-
而且你的杜兰达尔路线是基于哈希的- 请注意,这里的区别在于在/
这两者都能正常工作,并被杜兰达尔的路由器正确拦截。 对于非杜兰达尔路线,请使用相对路径-
所有这些都应该有效,这取决于您如何定位视图(控制器等) 其他可能性在之前的杜兰达尔版本中,如果你有多条路线 结束了 在同一文本中,它会找到第一个。除此之外,如果你有一条以相同文本结束的非杜兰达尔路线,它可能也会这样做。修复方法是使用guardRoute来确保只拦截正确的路由。 有两件事你可以试着看看是否会发生这种情况-
在激活第一条路由之前,在main.js或任何入口点中注册该处理程序,它应该会捕获任何未知的路由。在这一点上,检查指令的某些部分(在控制台中查看它所包含的内容的更好分解)是否与.cshtml等内容匹配,如果匹配,则构建正确的URI字符串和window.location。 这也将允许您覆盖坏路由,从而可能将它们指向自定义错误页面。 |
|
5
0
由于没有其他选择对我有效,最终我的解决方案是切换到Sammy.js。我可以毫不费力地将Sammy.jss放入我现有的应用程序中,而且它与我网站的其他部分没有冲突。此外,Sammy的路由不会触发完全导航,这意味着全屏应用程序在使用Sammy.js导航时将保持全屏状态。 |
![]() |
Erunayc · 未通过select设置KnockoutJS可观察值 9 年前 |
![]() |
Peter Wone · 为什么在Durandal VS项目模板中使用MVC? 11 年前 |
![]() |
Anders · Durandal尝试从viewmodel文件夹访问视图 11 年前 |
![]() |
dafriskymonkey · durandal:一个视图模型的多个视图 11 年前 |
|
Dragonseer · Durandal SPA接管常规网站路由 11 年前 |