ASP.NET MVC 4プロジェクトに取り組んでいます。このMVCプロジェクトに追加したい2 .aspx
別のWebFormsプロジェクトのページ。いくつか質問があります。
.aspx
ファイルと、ルートをどのようにconfigしますか?.aspx
使用するページ~/Shared/_Layout.chtml
(マスターページとして?this 質問に投稿された links を確認しましたが、古くなっているようです。多くのリンクはMVCをWebFormsに追加する方法を説明していますが、私はずっと探しています。
役立つリンクをいただければ幸いです。ありがとう!
ソリューション:
結局のところ、既存の[〜#〜] mvc [〜#〜]プロジェクトに。aspxページを追加することは、mvcをに追加するよりもさらに簡単な作業です。 aspx。私にとって最も興味深いことは、WebフォームとMVCの両方が、1つのプロジェクト共有の範囲で、IISのランタイムoneランタイムであることを知ることでした。
だから私がやったこと:
次のコードは、WebFormにRenderPartialメソッドを実装する方法を示しています。
_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 );
}
}
_
.aspxページのcodebehind.csに追加します。その後、次のようなWebフォームから呼び出すことができます。
_<% WebFormMVCUtil.RenderPartial( "ViewName", this.GetModel() ); %>
_
私はすべてのページで「メニュー」のみを共有していたので、部分的なビューに追加し、次に呼び出します_ Layout.chtml
_@Html.Partial("_Menu")
_
そしてMasterPage.Masterのように:
_ <% WebFormMVCUtil.RenderPartial("_Menu", null ); %>
_
これですべてです。結果として、私の_ Layout.chtmlおよびMasterPage.Masterは同じ共有部分ビューを使用します。そして、ページを移動するだけで。aspxページにアクセスできます。ルーティングシステムに問題がある場合は、App_StartのrouteConfigにroutes.IgnoreRoute("{resource}.aspx/{*pathInfo}");
を追加できます。
私が使用したソース:
それが後で誰かを助けることを願っています。