Я использую эту технику для встраивания MVC-частичек в страницы веб-форм. Не уверен, работает ли он в пользовательском элементе управления webforms, но это должно быть возможно.
Шаг 1. В части MVC вашего приложения создайте следующую вспомогательную функцию. Это делает всю тяжелую работу:
namespace MvcApplication
{
// create a dummy controller
public class DummyController : Controller
{
}
public static class MvcPartialHelper
{
public static void RenderPartial(string partialViewName, object model)
{
ControllerContext controllerContext;
HttpContextBase httpContextBase;
IView view;
RouteData routeData;
ViewContext viewContext;
httpContextBase = new HttpContextWrapper(HttpContext.Current);
routeData = new RouteData();
routeData.Values.Add("controller", typeof(DummyController).Name);
controllerContext = new ControllerContext(new RequestContext(httpContextBase, routeData), new DummyController());
view = ViewEngines.Engines.FindPartialView(controllerContext, partialViewName).View;
viewContext = new ViewContext(controllerContext, view, new ViewDataDictionary { Model = model }, new TempDataDictionary(), httpContextBase.Response.Output);
view.Render(viewContext, httpContextBase.Response.Output);
}
}
}
затем, внутри вашей веб-страницы (или пользовательского элемента управления):
добавить следующее для ссылки на вышеприведенное:
<%@ Import Namespace="MvcApplication" %>
и затем, когда вам нужно отобразить частичное, вы можете добавить что-то вроде:
<% MvcPartialHelper.RenderPartial("~/views/shared/TestPartial.ascx", "hello - this is my model"); %>
где вторым параметром является ваша «Модель».
Я широко использую эту технику в смешанной среде MVC / Webforms, и она работает как сон!
Наслаждайтесь