1

我有一个 asp.net Hot Towel SPA 应用程序,我想同时使用 .html 和 .cshtml 页面。

是否可以添加多个视图扩展:

viewEngine.viewExtension = '.cshtml';
viewEngine.viewExtension = '.html';
4

2 回答 2

3

viewExtension 不是数组,所以一开始不能设置多个 viewExtension。当然,这只是 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

于 2013-03-16T11:54:32.117 回答
1

看看这个要点:https ://gist.github.com/irium/5191764

这是我自己解决类似问题的方法。这些是 DurandalviewEngineviewLocator. 在你的模块中导入这个模块shell并运行customizeViewEngine()customizeViewLocator()函数。之后.html将像以前一样处理带有扩展名的视图,但.cshtml将从远程服务器请求视图。但请记住:由于 Durandal 的视图缓存,这只会执行一次。同一视图的所有后续请求将在客户端使用缓存版本。这可以通过从 RequireJS 手动取消注册视图模块来更改,但这超出了我的需求范围

这是编译为 JavaScript 的 CoffeScript 代码,但我希望你能明白这一点,我的代码会对你有所帮助。

于 2013-03-18T23:15:59.413 回答