Как добавить.страницы aspx для существующего проекта MVC 4?

у меня есть работа ASP.NET проект MVC 4. Я хочу добавить в этот проект MVC 2 .aspx страницы другого проекта WebForms. У меня есть несколько вопросов:

  1. где я должен скопировать это .aspx файлы и как я должен config мой маршруты?
  2. как мне это сказать .aspx страницы, чтобы использовать ~/Shared/_Layout.chtml как главная страница?
  3. кроме этого .aspx-страницы использует .управления ascx. Где мне быть? хранить их?
  4. как я должен изменить web.файл config?

Я посмотрел на ссылки опубликовано на этой вопрос, но они, казалось, устарели. Многие ссылки объясняют, как добавить MVC в WebForms, но я ищу все вокруг.

любые полезные ссылки буду признателен. Спасибо!

1 ответов


решение:

как оказалось, добавив .аспн страницы к существующему MVC project-еще более простая задача, чем добавление mvc .аспн. Самое интересное для меня было узнать, что как webforms, так и MVC, в рамках одного проекта share один среда выполнения в IIS.

Итак, что я сделал:

  1. добавил .аспн страницы от другой проект root моего MVC проект
  2. создал новый главная страница для меня webforms страницы(Правой Кнопкой Мыши проект->добавить->новый элемент->главная страница)
  3. для того чтобы Главная Страница WF и файл _Layout.метод chtml из MVC поделиться тем же Master 'View' нашел эту большую статью это позволяет вам вызвать что-то подобное @HTML-код.RenderPartial() способ в .aspx-страницы
  4. следующий код предоставляет информацию о том, как реализовать RenderPartial метод в WebForms:

    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 );
        }
    
    }
    

    добавьте его в codebehind.cs вашего .страница ASPX. Затем вы можете вызвать его из форм такой:

    <% WebFormMVCUtil.RenderPartial( "ViewName", this.GetModel() ); %>
    
  5. поскольку у меня было только "меню", разделяемое между всеми моими страницами, я добавил его в частичное представление, а затем вызвал его файл _Layout.метод chtml

    @Html.Partial("_Menu")
    

и MasterPage.Мастер!--11--> такой:

    <% WebFormMVCUtil.RenderPartial("_Menu", null ); %>

вот и все. В результате мой файл _Layout.метод chtml и MasterPage.Мастер!--11--> используйте те же общие частичные представления. И я могу acess .аспн страницы просто путем навигации по ним. Если у вас возникли проблемы с системой маршрутизации, вы можете добавить routes.IgnoreRoute("{resource}.aspx/{*pathInfo}"); в свой routeConfig в Файл App_Start.

источники, которые я использовал:

  1. объединить asp net mvc с webforms
  2. смешивание веб-форм и ASP.NET MVC
  3. MixingRazorViewsAndWebFormsMasterpages
  4. Как включить частичное представление внутри webform

Я надеюсь, что это поможет кому-то позже.