[解決済み] Webフォームの中に部分ビューを入れる方法
2023-06-06 11:42:34
質問
私がプログラミングしているあるサイトでは、ASP.NET MVCとWebFormsの両方を使用しています。
私は部分的なビューを持っており、これをWebフォーム内に含めたいと思っています。部分ビューにはサーバーで処理されるコードがあるため、Response.WriteFile を使用してもうまくいきません。 javascriptを無効にして動作させる必要があります。
どうすればよいのでしょうか?
どのように解決するのですか?
これを行う方法を理解できるかどうかを確認するために、MVC ソースを調べました。コントローラ コンテキスト、ビュー、ビュー データ、ルーティング データ、および html レンダー メソッドの間には非常に密接な結合があるように思われます。
基本的に、これを実現するためには、これらの余分な要素をすべて作成する必要があります。たとえば、ルーティング データは現在の WebForms ページを無視するように考慮します。
大きな問題は HttpContext にあるようです。MVC ページは HttpContextBase に依存し (WebForms のように HttpContext ではなく)、どちらも IServiceProvider を実装しますが、それらは関連性がありません。MVC の設計者は、新しいコンテキスト ベースを使用するようにレガシー WebForms を変更しないことを意図的に決定しましたが、ラッパーを提供しました。
これは動作し、WebForm に部分的なビューを追加することができます。
public class WebFormController : Controller { }
public static class WebFormMVCUtil
{
public static void RenderPartial( string partialName, object model )
{
//get a wrapper for the legacy WebForm context
var httpCtx = new HttpContextWrapper( System.Web.HttpContext.Current );
//create a mock route that points to the empty controller
var rt = new RouteData();
rt.Values.Add( "controller", "WebFormController" );
//create a controller context for the route and http context
var ctx = new ControllerContext(
new RequestContext( httpCtx, rt ), new WebFormController() );
//find the partial view using the viewengine
var view = ViewEngines.Engines.FindPartialView( ctx, partialName ).View;
//create a view context and assign the model
var vctx = new ViewContext( ctx, view,
new ViewDataDictionary { Model = model },
new TempDataDictionary() );
//render the partial view
view.Render( vctx, System.Web.HttpContext.Current.Response.Output );
}
}
そして、WebFormでは次のようにします。
<% WebFormMVCUtil.RenderPartial( "ViewName", this.GetModel() ); %>
関連
-
[解決済み] web.configでmaxJsonLengthの長さを無制限に設定することは可能ですか?
-
[解決済み] ASP.NET MVC - カスタムIIdentityまたはIPrincipalの設定
-
[解決済み] jQuery $(document).ready と UpdatePanels?
-
[解決済み] AngularJSの部分的なビューに基づいて動的にヘッダーを変更するには?
-
[解決済み] Razor でローカル変数を宣言するには?
-
[解決済み] ASP.NET MVC ビューエンジンの比較
-
[解決済み】ASP.NET MVCでクライアントのIPアドレスを取得するにはどうすればいいですか?
-
[解決済み】ASP.NET MVC 3 - 部分テンプレートと表示テンプレートと編集テンプレート
-
[解決済み] IIS Expressのweb.configにMIMEマッピングを追加する
-
[解決済み] ASP.NET MVCのパフォーマンス
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
.NET Coreでオブジェクトプールを使用する
-
ASP.NET Core Dependency Injectionフレームワークの活用
-
[解決済み] ASP.NET MVCコントローラは、Imageを返すことができますか?
-
[解決済み】ASP.NET Bundles ミニフィケーションを無効にする方法
-
[解決済み] [Solved] ASP.NET MS11-100: 投稿されたフォームの値の最大数の制限を変更するにはどうしたらいいですか?
-
[解決済み] ASP.Net MVCとWebフォームを比較する最大のメリット
-
[解決済み] フォーム認証のタイムアウトとsessionStateのタイムアウトの比較
-
[解決済み] HTTPハンドラ vs HTTPモジュール
-
[解決済み] コンテンツ」項目が重複して含まれていました。.NET SDKは、デフォルトでプロジェクトディレクトリの'Content'アイテムを含めます。
-
[解決済み] ASP.NETの場合。Session.SessionIDがリクエスト間で変更される