ApiControllers 和 Razor 视图
Posted
技术标签:
【中文标题】ApiControllers 和 Razor 视图【英文标题】:ApiControllers and Razor views 【发布时间】:2013-07-01 16:36:32 【问题描述】:我的计划是创建一些动态加载的程序集,它们可以提供一些 Web 界面。
我决定在这些程序集中放置一些 WebApi 控制器,其中一些控制器可以使用内联 Razor 模板(通过自定义 MediaTypeFormatter)提供 html 视图。 到目前为止,它与内联 Razor 模板配合得非常好:
var myModel = new Name:"World";
var template = "Hello, @Model.Name!";
return Razor.Parse(template, myModel);
但我遇到的问题是我不知道如何使用/注册位于我的程序集中的外部 Razor 视图(.cshtml 文件)。
到目前为止,我尝试了以下方法:
var template = Razor.Resolve("MyView.cshtml", myModel);
return template.Run(new ExecuteContext());
但是我的template
变量是null
,我猜是找不到MyView.cshtml,没有注册或者没有正确引用。
【问题讨论】:
您是否在 Visual Studio 中为您的 cshtml 文件设置了构建操作:“嵌入式资源”?您是否使用TemplateService
配置了Razor.SetTemplateService
,它可以从正确的程序集中解析您的模板?
@nemesv,不,我没有。您能否将我推向正确的方向如何实现解析我的模板的TemplateService
?谢谢。
这就是我的做法github.com/darrelmiller/HypermediaApiSite/blob/master/…
谢谢,你们中的任何人都想让您的评论成为答案,以便我接受吗?问题似乎已经解决了,我只需要弄清楚如何在加载每个程序集时为它们注册解析器。
【参考方案1】:
我们正在使用 Razor Generator - VS 的自定义工具 (http://visualstudiogallery.msdn.microsoft.com/1f6ec6ff-e89b-4c47-8e79-d2d68df894ec?SRC=VSIDE)。
Razor 视图在设计时进行预编译,并作为 C# 类内置到程序集中。无需包含 .cshtml 文件即可作为嵌入式资源进行项目。
【讨论】:
以上是关于ApiControllers 和 Razor 视图的主要内容,如果未能解决你的问题,请参考以下文章
覆盖 asp.net core razor 页面中的 razor 视图