使用 StringTemplate 的 ASP.NET MVC 中的多个皮肤
我正在考虑为我的 ASP.NET MVC 应用程序使用 StringTemplate 视图引擎。该应用程序将使用一种皮肤构建,但我预计会为其开发更多(通常是非常相似的)皮肤。这是我选择 StringTemplate 作为视图引擎的主要原因,因为视图中的逻辑为零。
在我的脑海中,我设想将每个皮肤放在文件夹结构中“Views”目录下的一个目录中,然后维护一个将主机名映射到皮肤目录的数据结构。这种方法的一个明显缺点是我必须显式指定我的视图文件 - 另一种方法可能是破解 View() 方法的实现以更改 /views/controller/action 标准路径并插入额外的层。
目前有人知道使用 ASP.NET MVC 和 StringTemplate 实现这些的示例吗?任何人都可以预见我的方法存在任何潜在问题吗?
提前致谢。
I am considering the StringTemplate view engine for my ASP.NET MVC application. This application will be built with one skin, but I then expect many more, often very similar skins to be developed for it. This is primiarly the reason for my choice of StringTemplate as the view engine, as there will be zero logic in the views.
In my head, I envisaged having each skin in a directory under the 'Views' directory in the folder structure, then maintaining a data structure which maps hostnames to skin directories. An obvious disadvantage of this approach is that I will have to explicitly specify my view files - an alternative might be to hack the implementation of the View() method to change the /views/controller/action standard path and insert an extra layer.
Is anyone aware of any examples of implementations along these lines using ASP.NET MVC and StringTemplate at present? Can anyone forsee any potential problems with my approach?
Thanks in advance.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我使用 nvelocity 做了类似的事情。我将所有页面和主题存储在数据库中,并使用 nvelocity 的内存实例来解析内容,解析的输出然后缓存在域密钥下。我仍然使用 defat 视图引擎进行渲染,但您可以轻松创建自定义操作结果以将结果渲染到响应流中。
I have done something similar using nvelocity. I store all my pages and themes in the database and use an in memory instance of nvelocity to parse the content the parsed output is then cached under the domain key. I still use the the defat view engine for rendering but you could just as easily create a custom action result to render the result into the response stream.
这是您可以使用默认视图引擎更改视图的查找路径的方法。也许它对你有帮助。
查找视图路径
This is how you can change the lookup path of views with the the default viewengine. Maybe it helps you.
Lookup View Path