我发现了一些像这样的问题,但是每一个问题我都无法解决这个问题。我不断遇到同样的问题。
我已经查看了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事情。由于我几乎关注其他问题/帖子上的所有人的指示但是还没有能够帮助我,所以对此非常加重。
答案 0 :(得分:0)
感谢@JustinRusso,他帮助解决了这个问题!
似乎发生的事情是,我在实际的web项目中对MVC 5.0.0.0的引用与我在我的Common库中引用的MVC版本不同,该库版本是4.0.0.1。
我更新了它的版本后。我现在回想起来感觉很愚蠢,但这就是学习的全部!
感谢大家的帮助和建议!
我认为你不能将评论标记为答案(至少从我能说的方面来看),所以只是把它作为一个更大的项目,以便将来人们可以找到它。