gpt4 book ai didi

asp.net - 从 WebForms 调用 ASP.NET MVC3 区域

转载 作者:行者123 更新时间:2023-12-04 06:18:17 24 4
gpt4 key购买 nike

我们正在将大型 ASP.NET WebForms 应用程序迁移到 ASP.NET MVC3 并遇到了一个小问题,希望有人可以帮助我们。

我们有一个站点的一小部分子集,在我们可以将其迁移到 MVC3 之前,它暂时必须保留为 WebForms 实现,这很好,我们已经成功地混合了站点以实现这一目标。

但是,我们需要能够用现在应该通过新的 MVC3 区域实现生成的内容替换 WebForms 页面上的一些现有 UserControl 实现 - 有没有办法从经典的 WebForms 中执行 MVC3 区域页?

最佳答案

好的;答案似乎是使用标准的 Html.Action 扩展方法创建一个调用所需区域的局部 View :

@Html.Action("Index", "Home", new { Area = "HelloWorld" })

需要一个虚拟 Controller :
public class WebFormController : Controller { }

然后我们可以使用我们的虚拟对象获取一个 ControllerContext ,然后我们可以从那里获取 Partial View 并渲染它:
public class WebFormMvcUtil
{
public static string RenderPartial(string partialName, object model)
{
var httpContextWrapper = new HttpContextWrapper(HttpContext.Current);

var routeData = new RouteData();
routeData.Values.Add("controller", "WebFormController");

var controllerContext = new ControllerContext(new RequestContext(httpContextWrapper, routeData),
new WebFormController());

IView view = ViewEngines.Engines.FindPartialView(controllerContext, partialName).View;

ViewContext viewContext;
var stringBuilder = new StringBuilder();
using (var stringWriter = new StringWriter(stringBuilder))
{
viewContext = new ViewContext(controllerContext, view, new ViewDataDictionary {Model = model}, new TempDataDictionary(), stringWriter);
view.Render(viewContext, viewContext.Writer);
}

return stringBuilder.ToString();
}
}

这归结为能够放置一个简单的
<%= WebFormMvcUtil.RenderPartial("_Area", null) %>

在 WebForms 页面中,所需的区域将呈现。

关于asp.net - 从 WebForms 调用 ASP.NET MVC3 区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6953332/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com