Переключение между ViewEngines с частичными представлениями не находит представление для отображения
У меня есть устаревшее приложение, созданное с помощью Web-форм, и пытающееся использовать asp.net mvc для рендеринга контента в частичном представлении. После публикации @ScottHanselman в MixingRazorViewsAndWebFormsMasterPagesWithASPNETMVC3 и, наконец, подхода Мэтта Ханикатта http://trycatchfail.com/blog/post/ASPNET-MVC-3-Razor-C-and-VBNET-WebForms-Using-Razor-Views-With-WebForms-Master-Pages
Я закончил с просмотром внутри моей страницы веб-формы
<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/MyMasterSite.Master" AutoEventWireup="false"
CodeBehind="InvoiceProfileReport.aspx.cs" Inherits="MyWebFormsNameSpace" %>
<%@ Import namespace="MyMvc.MvcReports.Controllers" %>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="ContentPlaceHolder1">
<%= this.BlackMagicMVC().Partial("HomepageWidget") %>
</asp:Content>
как вы видите, я пытаюсь вставить HomepageWidget, который находится внутри моей папки View
Мой контроллер создает оболочку вокруг запроса, Partial - метод расширения
public class BlackMagicMvcHelper
{
private static HtmlHelper GetHtmlHelper()
{
var controllerContext = new ControllerContext
{
HttpContext = new HttpContextWrapper(HttpContext.Current),
RouteData = new RouteData()
};
controllerContext.RouteData.Values["controller"] = "does-not-exist";
var context = new ViewContext(controllerContext,
new WebFormView(controllerContext, "does-not-exist", string.Empty),
new ViewDataDictionary(),
new TempDataDictionary(),
TextWriter.Null);
var helper = new HtmlHelper(context, new ViewPage());
return helper;
}
public MvcHtmlString ActionLink<TController>(Expression<Action<TController>> action, string linkText) where TController : Controller
{
var helper = GetHtmlHelper();
return helper.ActionLink(action, linkText);
}
public MvcHtmlString Partial(string partialName)
{
var helper = GetHtmlHelper();
return helper.Partial(partialName);
}
public MvcHtmlString RenderAction<TController>(Expression<Action<TController>> action) where TController : Controller
{
var helper = GetHtmlHelper();
var routeValues = ExpressionHelper.GetRouteValuesFromExpression(action);
return helper.Action((string)routeValues["action"], (string)routeValues["controller"], routeValues);
}
}
После загрузки страницы я получаю сообщение об ошибке:
Частичное представление "HomepageWidget" не найдено, или ни один механизм просмотра не поддерживает искомые местоположения. Были найдены следующие места:
~/Views/does-not-exist/HomepageWidget.aspx
~/Views/does-not-exist/HomepageWidget.ascx
~/Views/Shared/HomepageWidget.aspx
~/Views/Shared/HomepageWidget.ascx
~/Views/does-not-exist/HomepageWidget.cshtml
~/Views/does-not-exist/HomepageWidget.vbhtml
~/Views/Shared/HomepageWidget.cshtml
~/Views/Shared/HomepageWidget.vbhtml
Любое предложение о том, что я делаю не так?