是否有任何方法使用MVC helper或其他方法将常规视图的asp.net MVC操作渲染到旧的.aspx
WebForm上?将ASP.NET MVC放入WebForms页面
10
A
回答
10
免责声明:下面提出的解决方案是一种黑客攻击。
假设有下列的控制器:
public class HomeController : Controller
{
[ChildActionOnly]
public ActionResult Foo()
{
return View();
}
}
和一个相应的部分(Foo.ascx
)。
现在在一个传统的WebForms页面中,您想要使用此操作。你可以继续:
<%@ Page Language="C#" %>
<%@ Import Namespace="System.IO" %>
<script type="text/C#" runat="server">
private class DummyController : Controller { }
public HtmlHelper Html { get; private set; }
protected void Page_Load(object sender, EventArgs e)
{
var httpContext = new HttpContextWrapper(Context);
var controllerContext = new ControllerContext(
httpContext,
new RouteData(),
new DummyController()
);
var viewContext = new ViewContext(
controllerContext,
new WebFormView("Views"),
new ViewDataDictionary(),
new TempDataDictionary(),
TextWriter.Null
);
Html = new HtmlHelper(viewContext, new ViewPage());
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<%= Html.Action("About", "Home") %>
</div>
</form>
</body>
</html>
0
我认为最简单的就是使用客户端脚本。例如使用jQuery.Load
2
我在我的母版页中使用了这段代码,它工作。但过了几天,我发现我的应用程序每分钟都会因为内存泄漏而重新启动。我正在寻找原因的日子,最后,这部分代码是内存泄漏的原因。你必须处理DummyController和ViewPage。我已经修复它是这样的:
public class BaseMaster : System.Web.UI.MasterPage
{
#region MVC
Controller _controller= new DummyController();
ViewPage _viewPage = new ViewPage();
private class DummyController : Controller { }
public HtmlHelper Html { get; private set; }
private void InitHtmlHelper()
{
var httpContext = new HttpContextWrapper(Context);
var controllerContext = new ControllerContext(
httpContext,
new RouteData(),
_controller
);
var viewContext = new ViewContext(
controllerContext,
new WebFormView(controllerContext,"Views"),
new ViewDataDictionary(),
new TempDataDictionary(),
TextWriter.Null
);
Html = new HtmlHelper(viewContext, _viewPage);
}
public override void Dispose()
{
base.Dispose();
_controller.Dispose();
_viewPage.Dispose();
}
#endregion
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
InitHtmlHelper();
...
...
}
...
}
相关问题
- 1. mvc路由和webforms页面
- 2. ASP.NET MVC + WebForms
- 3. ASP.NET MVC或WebForms?
- 4. 将asp.net webforms逻辑转换为asp.net MVC
- 5. 将ASP.NET MVC混合到ASP.NET WebForms中
- 6. 学习Asp.Net WebForms或Asp.Net MVC
- 7. webforms vs asp.net mvc单页面应用程序 - 选择哪一个?
- 8. 如何在WebForms .aspx页面中使用ASP.Net MVC View?
- 9. ASP.NET MVC和WebForms中的页面构造时间
- 10. 将ASP.Net MVC与WebForms结合使用
- 11. ASP.NET webforms列表框 - 跨页面发布
- 12. ASP.NET 4.0 webforms在主页面内路由
- 13. ASP.Net webforms - gridview分页
- 14. Asp.Net Webforms VS Asp.Net WebSite(Razor)VS Asp.Net MVC
- 15. ASP.NET MVC主页面
- 16. ASP.NET MVC Master页面
- 17. 将AuiManager放入AuiNotebook页面
- 18. AngularJS与asp.net webforms或MVC?
- 19. WebForms和ASP.NET MVC共存
- 20. 从ASP.NET WebForms迁移到MVC
- 21. 从WebForms移到ASP.NET MVC
- 22. 使用ASP.NET webforms的MVC
- 23. ASP.NET MVC + WebForms - 路由冲突
- 24. Webforms vs Asp.Net MVC VS2010 LoadTest
- 25. Ajax性能:ASP.Net MVC vs Webforms
- 26. Ninject with ASP.Net webforms和MVC
- 27. 从ASP.net MVC页面插入多个表
- 28. 将不显眼的验证添加到ModelBinded asp.net 4.5 WebForms页面
- 29. ASP.NET(MVC) - 将页面呈现给文件
- 30. 从ASP.NET WebForms迁移到ASP.NET MVC
这应该是更新MVC3使用Html.RenderAction(actionName,controllerName)或Html.RenderPartial( “someView.ascx”,视图模型) – 2011-02-21 03:06:06
+1对我的作品,我需要将'controllerContext'传递给'WebFormView'构造函数来让它编译。 – 2011-07-25 14:55:17
要使'RenderAction'工作,请执行上述步骤,并将'TextWriter.Null'改为'Response.Output'并将'<%='改为'<%'。 – leppie 2017-01-16 14:17:09