【问题标题】:ApiControllers and Razor viewsApiControllers 和 Razor 视图
【发布时间】: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?谢谢。
  • 谢谢,你们中的任何人都想让您的评论成为答案,以便我接受吗?问题似乎已经解决了,我只需要弄清楚如何在加载每个程序集时为它们注册解析器。

标签: c# asp.net razor asp.net-web-api


【解决方案1】:

我们正在使用 Razor Generator - VS 的自定义工具 (http://visualstudiogallery.msdn.microsoft.com/1f6ec6ff-e89b-4c47-8e79-d2d68df894ec?SRC=VSIDE)。

Razor 视图在设计时进行预编译,并作为 C# 类内置到程序集中。无需包含 .cshtml 文件即可作为嵌入式资源进行项目。

【讨论】:

    猜你喜欢
    • 2018-01-26
    • 2013-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-01
    • 2012-12-07
    • 2017-10-01
    • 2011-06-27
    相关资源
    最近更新 更多