是否有任何方法使用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