2009-06-23 80 views
10

我們有一個很大的遺留應用程序,我們希望開始使用MVC來實現新功能。在MVC和WebForms之間共享主 - 處理<form>

要做到這一點,我們添加自定義路由,例如:

routes.IgnoreRoute("{*allaspx}", new { allaspx = @".*\.as[pmh]x(/.*)?" }); 

我們想要將舊的WebForms和新的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模式需要將視圖發回不同的動作(例如,「細節」視圖可能會回發到「編輯」動作)。

有沒有人知道解決這個問題的好方法?

+0

我知道這個相關的問題:http://stackoverflow.com/questions/841418這裏我特別關注表單標籤的問題 – Keith 2009-06-23 08:13:07

回答

8

我們共享網頁表單和MVC之間沒有<form>的母版頁。您可以爲Web表單創建一箇中間主頁面,然後使用您的根主頁面,但添加了<form>。母版頁的層次結構對於這些結構非常有用。

+0

這基本上是我到底做了什麼 - 有一個共同點.master與一些佈局,然後MVC.master和WebForms.master – Keith 2009-06-26 10:47:03