我有一个ASP.net MVC项目,但是我对MS实现MVC的方式不太感兴趣,因此将项目缩减到了最低限度。我没有定义任何路由,而是DefaultDocument
在web.config
其中有一个指向实现的类的条目IHttpHandler
。
在我的IHttpHandler
课堂上,我想输出一个Razor .cshtml文件,我不想创建到cshtml文件的路由条目,因此不能简单地将用户重定向到.cshtml文件。我发现有很多资源在讨论,PageParser.GetCompiledPageInstance
但这似乎是针对aspx文件而不是Razor View Engine。
那么,HttpContext
从我的IHttpHandler
班级输出.cshtml文件到我应该对哪些班级感兴趣呢?
public class Main : IHttpHandler{
public void ProcessRequest(HttpContext context){
//
}
}
看来我一直在找错东西-秘密的一句话是:
将剃刀视图渲染为字符串
下面的代码看起来不错:
public static string GetRazorViewAsString(object model, string filePath)
{
var st = new StringWriter();
var context = new HttpContextWrapper(HttpContext.Current);
var routeData = new RouteData();
var controllerContext = new ControllerContext(new RequestContext(context, routeData), new FakeController());
var razor = new RazorView(controllerContext, filePath, null, false, null);
razor.Render(new ViewContext(controllerContext, razor, new ViewDataDictionary(model), new TempDataDictionary(), st), st);
return st.ToString();
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句