【发布时间】:2015-02-12 15:52:58
【问题描述】:
我发现了一些其他类似的问题,但是每个人都无法解决我遇到的这个问题。我不断遇到同样的问题。
我已经查看了 this 和 that 以及其他多个!每一件事我都会遇到同样的问题。
我得到以下异常:
The view at '~/Views/Email/Ticket.cshtml' must derive from WebViewPage, or WebViewPage<TModel>.
我使用的代码是:
public static string RenderViewToString(string controllerName, string viewName, object viewModel)
{
HttpContextWrapper context = new HttpContextWrapper(HttpContext.Current);
RouteData routeData = new System.Web.Routing.RouteData();
routeData.Values.Add("controller", controllerName);
ControllerContext controllerContext = new ControllerContext(context, routeData, new RenderController());
RazorViewEngine razorViewEngine = new RazorViewEngine();
ViewEngineResult razorViewResult = razorViewEngine.FindView(controllerContext, viewName, string.Empty, false);
using (StringWriter writer = new StringWriter())
{
ViewDataDictionary viewData = new ViewDataDictionary(viewModel);
var viewContext = new ViewContext(controllerContext, razorViewResult.View, viewData, new TempDataDictionary(), writer);
razorViewResult.View.Render(viewContext, writer);
writer.Flush();
return writer.GetStringBuilder().ToString();
}
}
RenderController 只是:
private class RenderController : ControllerBase
{
protected override void ExecuteCore()
{
}
}
无论我做了什么,或者我尝试了不同的方法,似乎都没有让这个错误消失,我已经尝试让视图继承对象,但你不能在同一件事中拥有 @model 和 @inherit。对此感到非常恼火,因为我在其他问题/帖子上遵循了几乎每个人的指示,但无法帮助我。
【问题讨论】:
标签: c# asp.net-mvc razor