2014-10-09 49 views
0

好吧,我有一個webforms項目,我想開始做MVC。我希望MVC頁面能夠使用Webforms主頁面,直到我可以將更多的東西傳遞給MVC。我有這個與我發現,你可以找到下面列出的解決方案的工作(該項目的作品真的很好,除了服務器事件)Webform母版頁MVC PartialRender服務器事件不會觸發

https://github.com/MicahArmantrout/BlackMagicMVC

enter image description here

我的問題是在主該服務器端事件頁面不會觸發。如果您點擊「加載項目」單擊我!該按鈕將觸發服務器事件,文本將更改爲「您點擊了我」。

enter image description here

如果您轉到「點擊對於MVC」(這是一個MVC局部渲染),然後點擊「點擊我!」服務器事件永遠不會觸發。任何想法爲什麼,如果這可以解決?

注:這不只是一個鍛鍊我有一個應用程序的地方useful.If你想了解該項目的更多,這將是極其請參閱

http://trycatchfail.com/blog/post/ASPNET-MVC-3-Razor-C-and-VBNET-WebForms-A-Tale-of-Black-Magic-Voodoo.aspx

回答

1

沒有MVC中服務器端事件的概念。而且MVC不會像ASP.Net WebForms那樣連接客戶端事件並將其轉換爲服務器端事件處理程序。

您有以下選擇:

  • 重新創建母版頁的MVC(_Layout.cshtml),然後在你的控制器處理按鈕點擊。根據您的設計,需要進行一些重構。您需要決定如何或誰處理這些按鈕點擊。你可能不想在基本控制器中處理其中的一些,但我建議再看看你在做什麼,以及如何在MVC上翻譯它們。
  • 做另一種方式 - 在MVC中定義您的母版頁,並在您的webforms中呈現該頁。

理想情況下,您的母版頁不應該有任何業務功能。它應該不過是導航和風格。只要你堅持這一點,遷移到MVC不會那麼痛苦。

+0

是的,但主頁仍然在Webforms中,所以不應該將該部分連接起來?至於業務邏輯不應該在母版頁...我同意....我已經繼承了這個項目,所以它不是我的選擇:) – 2014-10-09 17:29:31

+0

不在局部視圖。 'runat = server'是這裏的祕訣。 MVC不知道是什麼意思,只有webForms明白這一點。 – Mrchief 2014-10-09 17:31:14

+0

酷我猜這是一個明顯的答案,但對於來自webforms世界的傢伙,我真的很感謝你的幫助! – 2014-10-09 17:32:23

相關問題