我应该如何在 NVelocity 模板中为不同的用户类型提供单独的布局?
我正在重新设计我们在线商店的模板(使用 Castle Monorail 和 NVelocity 视图引擎),但希望向某些用户提供旧的布局。
我开始向 PropertyBag 添加一个变量,该变量确定用户应获取的版本,并将布局设置为“BaseLayout.vm”,如下所示:
#if($StoreVersion == 2)
#parse("VersionTwo/DefaultLayout.vm")
#else
#parse('VersionOne/DefaultLayout.vm')
#end
这对于布局来说效果很好,从技术上讲,我可以在每个模板中使用这种方法文件,但这似乎有点啰嗦。有没有更好的方法可以机械化这个?
I'm redesigning the templates for our online store (Using Castle Monorail with the NVelocity view engine) but want to provide the old layout to certain users.
I've started out adding a variable to the PropertyBag that determines the version the user should get and set the layout to 'BaseLayout.vm' which looks like this:
#if($StoreVersion == 2)
#parse("VersionTwo/DefaultLayout.vm")
#else
#parse('VersionOne/DefaultLayout.vm')
#end
This works OK for the layout and I can technically use this approach in every template file, but this seems a bit long winded. Is there a better way I can mechanize this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以将条件放入代码中并在控制器中设置 LayoutName 属性,而不是有条件地“转发”到其他布局的布局。
Instead of having a layout that "forwards" conditionally to other layouts, you can put the condition in code and set the LayoutName property in the controller.
我会创建一个控制器过滤器并覆盖要根据您的逻辑呈现的布局名称
I would crate a controller filter and override the layout name to be rendered based to your logic