MVCヘルパーなどの方法を使用して、Webフォームの古い.aspx
にasp.net MVCアクションの通常のビューをレンダリングする方法はありますか?WebFormsページにASP.NET MVCを配置する
10
A
答えて
10
免責事項:以下の提案された解決策はハックです。
public class HomeController : Controller
{
[ChildActionOnly]
public ActionResult Foo()
{
return View();
}
}
と(Foo.ascx
)に対応する部分:
では、次のコントローラを持っていると仮定します。
これまでのWebフォームのページで、この操作を使用したかったのです。次のように進めることができます:
<%@ 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
私はこのコードを自分のMasterPageで使用していました。しかし、数日後に私のアプリケーションがメモリリークのため毎分再起動していることがわかりました。私はその原因のために日々狩りをしていましたが、コードのこの部分がメモリリークの原因でした。あなたは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. asp.net WebForms&asp.net MVCセキュリティオプション
- 2. ASP.NET MVC + WebForms - ルートコンフリクト
- 3. asp.net webformsとmvcの統合
- 4. WebFormsアプリケーション内のASP.Net MVCビュー
- 5. MVCルーティングによるWebFormsページのパフォーマンスログ
- 6. ASP.net MVC Web配置プロジェクト
- 7. ASP.NET WebFormsからASP.NET MVCへの移行に関する提案?
- 8. asp.net mvcとjQueryを呼び出すasp.net webformsからロードする
- 9. ASP.NET MVCでTelerik Webformsコントロールを使用
- 10. メインMVCアプリケーションのサブディレクトリにASP.NET MVCアプリケーションを配置しますか?
- 11. ASP.NET WebformsとMVC 3のメンバシッププロバイダの違い
- 12. ASP.NET WebFormsからMVCへの移行
- 13. リクエスト間にASP.NET WebFormsページの状態を格納する方法
- 14. ASP.NET MVC |モデルにDataAnotationsを配置する場所
- 15. webforms対asp.net mvcシングルページアプリケーション - 選択するには?
- 16. ViewResult ASP.NET WebFormsプロジェクトのコンテンツASP.NET MVCを使用したプロジェクト
- 17. Castle.Windsorとデータアクセスオブジェクトwebforms asp.net
- 18. ASP.NET MVCのViewDataに相当するASP.NET WebFormsとは何ですか?
- 19. WebFormsとMVC
- 20. ASP.NET MVC 2ロジックを配置する場所
- 21. AzureでASP.NET MVCプロジェクトをプリコンパイルする(Web配置ではない)
- 22. ASP.NETでWebFormsとMVCを混在させる方法
- 23. ASP.NETコントロールをMVCページに配置しようとすると、例外が発生する
- 24. ASP.NET 4 Webformsルーティング
- 25. asp.net webformsのmysql_fetch_array
- 26. ASP.NET(MVC) - ページをファイルにレンダリングする
- 27. Refresh asp.net mvcページ
- 28. AreaにMVCコンテンツフォルダを配置する
- 29. ASP.NET MVC - 検証ロジック - 配置する場所
- 30. 常にSessionTimeOutページにリダイレクトするASP.net MVC
これはMVC3に私のためHtml.RenderAction(actionNameの、コントローラ名)またはHtml.RenderPartial(「someView.ascx」、ViewModelに) –
1つの作品を使用するように更新する必要があります。私はこのようにそれを修正する必要がありそれをコンパイルするために 'controllerContext'を' WebFormView'コンストラクタに渡す必要がありました。 –
'RenderAction'を動作させるには、上記のステップを行い、' TextWriter.Null'を 'Response.Output'に変更し、' <%= 'を' <% 'に変更してください。 – leppie