2011-06-20 142 views

回答

11

我一直在這裏爲內部應用程序一起運行Webforms和MVC。它開始作爲一個webforms應用程序,我已經將其遷移到MVC2(然後3),仍然有幾個仍然成功地與Webforms合作。如Darin所說,主要的問題是模板化。如果您使用Webforms View Engine,則必須創建2層主頁面。 Webforms代碼(如腳本管理器)不能在MVC頁面上運行,並且MVC代碼在Webforms頁面下不起作用。

我的母版頁設置了全局母版頁,不包含任何MVC或Webforms代碼。它只有CSS,全局JavaScript和主佈局。然後我有一個MVC母版頁和一個webforms母版頁,都有指令將全局母版頁用作母版頁。然後,每個webforms頁面使用Webforms子主頁面,而MVC使用MVC sub-master頁面。

如果您需要在全局母版頁中放置一些代碼,您可以通過測試Page is System.Web.Mvc.ViewPage來檢測子頁面是否爲Webforms或MVC頁面。如果這是true那麼它是一個MVC頁面,否則它是一個Webforms頁面。但是,如果您決定使用Razor視圖引擎(我建議用於MVC,那麼它會更好),這會變得更加困難。你必須做一些額外的工作,通過我之前提到的。 This blog post應該在這方面提供幫助。

+0

謝謝。這也導致我到其他職位:http://www.eworldui.net/blog/post/2008/05/09/ASPNET-MVC-Living-in-a-Web-Forms-World.aspx和http:// www.eworldui.net/blog/post/2011/01/07/Using-Razor-Pages-with-WebForms-Master-Pages.aspx –

1

我能想到的是唯一的疑難雜症動心重用現有的WebForms代碼到MVC部分,並與DataSets最終進入你的控制器動作,或(可能上帝保佑)到您的意見:-)另一種疑難雜症重複使用這樣的代碼是,你應該非常小心,不要以runat="server"的東西進入你的MVC視圖。我會盡量保持鬆散耦合的兩部分。正因爲如此,我不會它們混合到同一個項目:-)

2

除了what Darin said,儘量不要使用WebForms的視圖引擎,如果你能幫助它,並創建正確的URL路由,使網頁應該是由WebForms處理仍由WebForms處理。

+0

優秀點。 –

+0

@bzlm:感謝您添加直接鏈接。 – R0MANARMY

1

我想這取決於WebForms和網站的MVC部分之間會發生什麼樣的交互。如果兩者都使用相同的後端和相同的安全日誌,那麼你應該沒問題。如果網絡表單和MVC操作需要合作,您可能會遇到問題。正如我所說,這完全取決於互動的內容。如果他們並排運行,但彼此獨處,那麼你應該沒問題。

可能出現的一個問題是需要從WebForms切換到MVC,反之亦然,儘管經驗和實踐將在這裏教會您。

0

我建議保持兩個應用程序分開並給予不同的子域,您可以通過使用虛擬目錄將它們保留在同一個子域中,但我不喜歡這種方法。

您可以使用一個cookie通過共享validationKey和decryptionKey在兩個應用上進行驗證。

這樣你的代碼庫不會混合,你也沒有反對任何配置文件問題。

我已經發布了此方法的longer description