2010-05-27 91 views
2

我正在開發一個Web應用程序。我的一位同事寫了一些asp.net表單頁面。頁面類都從BasePageClass繼承,這當然是繼承Page類。我希望添加一些我聽說過的MVC控制器需要使用BasePageClass中實現的相同邏輯。通常,我想繼承控制器類中BasePageClass中的函數,但這會打破繼承層次結構。混合asp.net Forms和MVC應用程序中的頁面繼承

解決此問題的最佳做法是什麼?

+0

請勿使用BasePageClass。使用母版頁。 – 2010-05-27 15:33:49

+0

爲了澄清,還有一個母版頁也使用,但一些頁面的通用邏輯也在BasePageClass中。 – 2010-05-27 15:35:39

回答

2

如果有共同的功能,我會懷疑這個功能應該從頁面/控制器中分離出來。這是更好的OOP/D。然後,您的控制器基頁和您的System.Web.UI.Page基本都可以都具有返回包含此常用功能的類的屬性。

(我見過很多情況,其中的東西塞進基本頁面應該在其他地方。您對頁面和控制器中的這個功能的需求可能只是讓這個糟糕的設計變得輕盈, 。不是作爲本身就是一個問題)

不太可能是你想要的,但仍然是一個可能性:

  • 你也可以把你常用的功能在一系列的重載擴展方法,其中第一個參數是(a)System.Web.UI.Page和其他重載(b)System.Web.Mvc.Controller。
  • 您的基本頁面和基本控制器都可以實現一個通用接口,並將功能存儲在一個普通的地方。
  • 將此功能完全取出,並根據需要在控制器邏輯和代碼隱藏中執行此功能。
+0

帕特里克,我想知道你在哪裏看到了所有那些塞進基本頁面的東西...... – 2010-05-27 16:07:45