asp.net-mvc – 在ASP.NET Forms页面中包含MVC局部视图

我们在同一解决方案中有旧的ASP.NET Forms页面和新的MVC视图和部分视图.网站上的一些页面是MVC,遗留页面是表格.其中一个旧的Forms页面是.ascx控件.

有没有办法让我将MVC局部视图(.ascx)插入此Forms .ascx控件?

最佳答案 我使用这种技术将MVC部分嵌入到webforms页面中.不确定它是否适用于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环境中广泛使用这种技术,它就像一个梦想!

请享用

点赞