我需要解析 aMVC
PartialView
然后将其转换为纯 html 字符串并将其作为HttpResponseMessage
from发送ApiController
。
搜索我发现的网络RazorEngine
,我尝试使用它没有成功,因为它不支持MVC
像这样的助手,@Html
或者@Styles.Render("~/css")
因此向我抛出错误(遵循 RazorEngine 声明)。
那么有没有办法从 a 渲染部分视图ApiController
?
Razor vs. MVC vs. WebPages vs. RazorEngine
Razor 在这组技术中的位置经常让人感到困惑。本质上,Razor 是一个解析框架,它负责获取您的文本模板并将其转换为可编译的类。在 MVC 和 WebPages 方面,它们都利用这个解析引擎将文本模板(视图/页面文件)转换为可执行类(视图/页面)。我们经常会被问到诸如“@Html、@Url 在哪里”之类的问题。这些不是 Razor 本身提供的功能,而是 MVC 和 WebPages 框架的实现细节。
RazorEngine 是 Razor 解析器的另一个使用者框架。我们封装了 Razor 解析器的实例化,并为使用运行时模板处理提供了一个通用框架。
我的代码:
Func<string, string, object, HttpResponseMessage> renderTemplate = (templatePath, templateName, model) =>
{
var viewPath = HttpContext.Current.Server.MapPath(templatePath);
var template = File.ReadAllText(viewPath);
//Here throws error because it does not support MVC helpers like "@Html"
var parsedTemplate = Engine.Razor.RunCompile(template, templateName, null, model);
var response = new HttpResponseMessage(HttpStatusCode.OK) { Content = new StringContent(parsedTemplate) };
response.Content.Headers.ContentType = new MediaTypeHeaderValue("text/html");
return response;
};
我以这种方式调用上述函数,但它当然不起作用:
renderTemplate(templatePath, "keyName", data);
谢谢!