Как добавить.страницы aspx для существующего проекта MVC 4?
у меня есть работа ASP.NET проект MVC 4. Я хочу добавить в этот проект MVC 2 .aspx
страницы другого проекта WebForms. У меня есть несколько вопросов:
- где я должен скопировать это
.aspx
файлы и как я должен config мой маршруты? - как мне это сказать
.aspx
страницы, чтобы использовать~/Shared/_Layout.chtml
как главная страница? - кроме этого .aspx-страницы использует .управления ascx. Где мне быть? хранить их?
- как я должен изменить web.файл config?
Я посмотрел на ссылки опубликовано на этой вопрос, но они, казалось, устарели. Многие ссылки объясняют, как добавить MVC в WebForms, но я ищу все вокруг.
любые полезные ссылки буду признателен. Спасибо!
1 ответов
решение:
как оказалось, добавив .аспн страницы к существующему MVC project-еще более простая задача, чем добавление mvc .аспн. Самое интересное для меня было узнать, что как webforms, так и MVC, в рамках одного проекта share один среда выполнения в IIS.
Итак, что я сделал:
- добавил .аспн страницы от другой проект root моего MVC проект
- создал новый главная страница для меня webforms страницы(Правой Кнопкой Мыши проект->добавить->новый элемент->главная страница)
- для того чтобы Главная Страница WF и файл _Layout.метод chtml из MVC поделиться тем же Master 'View' нашел эту большую статью это позволяет вам вызвать что-то подобное @HTML-код.RenderPartial() способ в .aspx-страницы
-
следующий код предоставляет информацию о том, как реализовать 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() ); %>
-
поскольку у меня было только "меню", разделяемое между всеми моими страницами, я добавил его в частичное представление, а затем вызвал его файл _Layout.метод chtml
@Html.Partial("_Menu")
и MasterPage.Мастер!--11--> такой:
<% WebFormMVCUtil.RenderPartial("_Menu", null ); %>
вот и все. В результате мой файл _Layout.метод chtml и MasterPage.Мастер!--11--> используйте те же общие частичные представления. И я могу acess .аспн страницы просто путем навигации по ним. Если у вас возникли проблемы с системой маршрутизации, вы можете добавить routes.IgnoreRoute("{resource}.aspx/{*pathInfo}");
в свой routeConfig в Файл App_Start.
источники, которые я использовал:
- объединить asp net mvc с webforms
- смешивание веб-форм и ASP.NET MVC
- MixingRazorViewsAndWebFormsMasterpages
- Как включить частичное представление внутри webform
Я надеюсь, что это поможет кому-то позже.