Проблемы с aspnetForm в гибридном приложении asp.net webforms / mvc - PullRequest
1 голос
/ 04 октября 2010

Я создаю гибридное приложение MVC / Webforms, где мои представления MVC используют asp.net webforms 2 MasterPage.Все работало отлично, пока я не решил поместить форму в моем представлении MVC.Поскольку ASP.NET Webforms оборачивает всю страницу в элемент формы, и вы не можете иметь форму внутри формы, я немного застрял.

На главной странице есть множество устаревших элементов управления, которые полагаются на сообщение назад, поэтому я не могу просто отключить его.Одна мысль, которая у меня возникла на данный момент, заключается в том, что все элементы управления, которые опираются на форму aspnetForm, находятся выше страницы MVC, поэтому мне было интересно, есть ли способ контролировать, когда asp.net закрывает тег формы aspnetForm?Или у кого-нибудь есть другие мысли о том, как я мог бы решить эту проблему?

Ответы [ 2 ]

1 голос
/ 04 октября 2010

Я был здесь раньше и, в конечном итоге, набросал для отдельных главных страниц, однако:

Возможно, вы не присматривались слишком внимательно, но у вас есть контроль над тем, где и как эта форма обернута вокругвесь ваш контейнер

[Редактировать]: более полный пример:

<body>
<form id="form1" runat="server">
<div>
    <asp:ContentPlaceHolder ID="LegacyContentHolder" runat="server">

    </asp:ContentPlaceHolder>
</div>
</form>
<asp:ContentPlaceHolder ID="MvcContentPlaceHolder" runat="server">

 </asp:ContentPlaceHolder>    
</body>

Конечно, вы можете просто перемещать это вокруг соответствующих заполнителей для материала Webforms, и оставить другие заполнители вне области действияэто?

Это генерирует следующую разметку, если используется на странице

<body>
<form name="aspnetForm" method="post" action="Test.aspx" id="aspnetForm">
<div>
 <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE"     value="/wEPDwUJNDMyNDU0NjAzZGT01Ocz+ON8w56SI8x7nj2/h8B/4g==" />
 </div>

<div>


Web forms behaviour has been generated here, boo

</div>
</form>


MVC content has been generated here, yay


</body>

[Редактировать]

Примечание: я проверил наш код сейчас, пришлось вернутьсянесколько версий - у нас также было три главных страницы, одна для скелета, описанного выше, одна со специфическими вещами веб-форм ASP.NET и одна наследованная от этого только для MVC.

Сохраненные вещидовольно чистый и готовый к переносу его из Webforms в будущем.

0 голосов
/ 04 октября 2010

У вас не должно быть проблем , вы контролируете, где тег формы находится на вашей главной странице.Вы говорите о необходимости закрыть тег формы главной страницы на ранней стадии при использовании его для MVC и оставить его там, где он есть для веб-форм?Вам, вероятно, придется возиться с деревом управления, когда я делал это раньше, пока я не использовал два мастера, хотя вам, возможно, удастся обойтись без абстрагирования общих base.master, тогда есть mvc.master и webforms.master

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...