如何在Durandal中配置路径?

时间:2016-01-28 08:50:52

标签: asp.net-mvc durandal-2.0

我是Durandal的新手,但熟悉mvc4。我正在尝试将一个大量使用knockout的现有应用程序移植到SPA框架。

我已经能够使用此帖子中的信息获得标准的View / ViewModel约定:https://stackoverflow.com/a/15636715/1693081

我想将此扩展到基于功能的结构,因为每个页面都有多个可重用的组件,我想按如下方式设置我的应用程序目录:

App 
|
|--- Pages
|    |
|    |---Shell
|    |   |
|    |   |---Shell.chtml
|    |   |---Shell.js
|    |   |---web.config
|    | 
|    |---Dashboard   
         |
         |---Dashboard.chtml
         |---Dashboard.js
         |--web.config

我认为这就像注释掉viewLocator.userConvention()并添加了一条新路由一样简单,但这会导致无法加载根模块异常。

来自我的main.js:

app.start().then(function () {
   //Replace 'viewmodels' in the moduleId with 'views' to locate the view.
   //Look for partial views in a 'views' folder in the root.
   //viewLocator.useConvention();

   //Show the app by setting the root view model for our application with a transition.
   app.setRoot('pages/shell/shell', 'entrance');
});

来自我的Routeconfig.cs:

        routes.MapRoute(
            name: "Durandal Page Level Views",
            url: "App/Pages/{viewFolder}/{viewName}.html",
            defaults: new { controller = "DurandalView", action = "Get" }
        );

我错过了一些明显的东西吗? Durandal的文档表明它们的默认值不适合大型应用程序,但不会让我知道如何解决它的问题。

谢谢!

1 个答案:

答案 0 :(得分:0)

我有一个解决这个问题的方法。事实证明,删除web.config会干扰在每个目录中加载js文件的能力。我最终将每个页面拆分为模型并查看模型文件夹。

|
|---Pages
    |
    |---Shell
        |
        |---View
        |   |
        |   |---Shell.html
        |   |---web.config
        |
        |---ViewModel
            |
            |---Shell.js