У нас большое унаследованное приложение, в котором мы хотим начать использовать MVC для новой функциональности.
Для этого мы добавили пользовательскую маршрутизацию, например:
routes.IgnoreRoute( "{*allaspx}", new { allaspx = @".*\.as[pmh]x(/.*)?" } );
И мы хотим поделиться главной страницей между старыми веб-формами и новыми страницами MVC.
Это кажется достаточно простым - изменил мастер для наследования от ViewMasterPage
, и его можно использовать как мастер для страниц MVC.
Проблема в HTML <form>
.
Главная страница имеет тег <form>
в верхней части и 3 панели содержимого внутри, как это нравится WebForms. Элемент управления Page
переопределяет форму мастера, указывая на страницу, и это выглядит жестко закодированным поведением.
Все три панели содержимого имеют элементы управления WebForms, поэтому тег уровня страницы <form>
должен находиться вне их, чтобы охватить все три. Примерно так:
<form id="form1" runat="server">
...
<asp:contentplaceholder id="content1" runat="server" />
...
<asp:contentplaceholder id="content2" runat="server" />
... //etc
</form>
Однако для MVC мы хотим иметь формы внутри представлений, используя помощник Html.BeginForm
. HTML не позволяет вам вкладывать формы. Для шаблона MVC необходимо, чтобы представления возвращались к другим действиям (например, представление «детали» может отправлять обратно к действию «изменить»).
Кто-нибудь знает хороший способ обойти это?