我有一个asp.net Hot Towel SPA应用程序,我想同时使用.html和.cshtml页面。
是否可以添加多个viewExtensions:
viewEngine.viewExtension = '.cshtml';
viewEngine.viewExtension = '.html';
答案 0 :(得分:3)
viewExtension不是数组,因此在开始时,您无法设置多个viewExtensions。当然,这只是javascript,你可以进入源代码并从核心Durandal应用程序文件夹中更改viewEngine.js(链接在这里:https://github.com/BlueSpire/Durandal/blob/master/App/durandal/viewEngine.js)。
话虽如此,如果客户端下拉* .cshtml文件,剃刀语法将不会以您认为的方式呈现。如果服务器提供* .cshtml视图,那么它将在向客户端吐出之前呈现。你最好的选择是,如果你正在寻找使用Durandal的动态视图渲染,那就是覆盖viewEngine中的一个或两个函数,即:viewEngine.convertViewIdToRequirePath(viewId):string,甚至进一步控制viewEngine.createView(viewId):promise。
有关详细信息,请查看以下链接:Routing and Leveraging Dynamic Content in DurandalJS
答案 1 :(得分:1)
看一下这个要点:https://gist.github.com/irium/5191764
这是我自己解决类似问题的方法。这些是Durandal viewEngine
的自定义
和viewLocator
。在shell
模块中导入此模块,然后同时运行customizeViewEngine()
和customizeViewLocator()
个功能。之后,.html
扩展程序的视图将像以前一样处理,但会从远程服务器请求.cshtml
个视图。但请记住:由于Durandal的视图缓存,这只会进行一次。同一视图的所有后续请求将在客户端使用缓存版本。这可以通过从RequireJS手动取消注册视图的模块来更改,但这超出了我的需求范围
这是编译为JavaScript的CoffeScript代码,但我希望你能得到这个想法,我的代码会帮助你。