1

私はMVCに慣れていない状況にあり、チームの他のプログラマーはそれほど時々私の学習曲線が成果物を少し遅くしているので、MVCでミキシングするための私のオプションが何であるかを理解しようとしていますベータリリースで機能を利用できるようにし、本番用にMVCで書き直す機会を与えるための短期的なソリューションとして、WebFormsを使用したビュー(または部分ビュー)。

この記事を読んで、両方のフレームワークのアセンブリを参照する方法を説明していますが、それらを1つのページに混在させる方法を説明していないようです。

たとえば、ユーザーコントロール(.ascx)とビュー(.cshtml)を取得して、両方をマスターページ(.master.aspx)に簡単にレンダリングできますか?

これは、サーバー側でビューを実行し、その内容を応答ストリームに書き込むサーバーコントロールが必要な場合と同じです。他のオプションは、ビューをasp.netページにjavascript ajaxすることだと思いますが、それを回避できるかどうか疑問に思っています。

4

1 に答える 1

2

はいといいえ。

ASP.NET MVCとWebFormsを混在させることができますが、推奨されていません。また、混在させることができるものにも制限があります。私の投稿全体を通して、Razor / CSHTMLビューではなく、ASPXビューについて言及しています。WebFormsで代替のViewEngineを使用することはほとんど不可能です。

MVCビュー(CSHTMLではなくASPX)は、正しく初期化し、必要に応じてModelオブジェクトを提供することを条件にWebFormsで使用できます(ビューは、CodeBehindクラスがないことを除いて通常のaspxページと同じです)。

また、いくつかのマイナーなハックを使用して、 ASCXコントロールとSystem.Web.UI.ControlサブクラスをASP.NET MVCビューにロードすることもできます(完全ではありません。たとえば、コントロールのライフタイムイベントは発生しませんが、ビューにレンダリングすることが重要です。 )。

また、MVC Webアプリケーションと同じ環境にASPXページを配置することもできます(ルーティングが機能している限り)。CodeBehindスタイルのASPXは、ユーザーをMVCコントローラーアクションにリダイレクトでき、その逆も可能です。

ただし、WebFormsページのCodeBehind内からMVCコントローラーのアクションを呼び出すには、多くの困難な作業が必要ですが、必要な理由はわかりません。

元の質問を言い換えて、最終的に何を達成したいのかを考えるべきだと思います。個人的には、これがメンテナンスタスクである場合、私は純粋なWebFormに固執し、新しいプロジェクトにのみMVCを使用します。WebFormsは死んでいません。ScottGuに聞いてください。

于 2012-08-30T22:53:27.490 に答える