如何在2sxc的C# Razor代码中获取视图的Razor模板文件名
如何在C# Razor中通过ICmsView获取模板文件名(含路径)
环境信息
当前MyView(实现ICmsView接口)返回的信息如下:
MyView.Name: FCTRL - Dark Card w Tawk JS API Experiments MyView.Path: /Portals/0/2sxc/Content/FCTRL
问题说明
- 需求:获取当前视图对应的模板文件名(包含完整路径也可)
- 现存问题:
- 原配置预期通过
MyView.Path获取,但后端仅返回视图文件夹根路径,且该属性已被弃用 - 目前获取文件夹路径的正确方式是
MyView.Folder.Url,但无法拿到模板文件本身的路径 - 编辑视图的Angular UI中可见完整模板路径,但无法通过
CmsView接口直接访问 - 尝试过
AsEntity(MyView).Get("Path")转换实体,但MyView无法转换为实体类型
- 原配置预期通过
解决方法
在C# Razor代码中,可通过ICmsView的Template属性直接获取模板文件的路径信息,常用属性如下:
- 模板Web路径(含文件名):
MyView.Template.Url—— 返回可通过Web访问的完整路径 - 模板物理服务器路径(含文件名):
MyView.Template.PhysicalPath—— 返回服务器本地的文件路径 - 模板相对路径(含文件名):
MyView.Template.Path—— 返回相对于视图根文件夹的路径
使用示例
@{ // 获取模板的Web访问路径 var templateWebUrl = MyView.Template.Url; // 获取模板在服务器上的物理路径 var templatePhysicalPath = MyView.Template.PhysicalPath; } <div> <p>模板Web路径:@templateWebUrl</p> <p>模板物理路径:@templatePhysicalPath</p> </div>
内容的提问来源于stack exchange,提问作者Jeremy Farrance
相关产品推荐
相关产品推荐

