2009-11-04 46 views
2

我正在構建一個ASP.NET MVC應用程序,其中許多屏幕將具有多個不同的視圖。理想情況下,用戶將能夠將他們需要的項目以門戶樣式帶入他們的工作空間頁面。即使這是不可能的,也需要爲各類用戶以各種方式加入一些常見項目:傳統繼承難以實現的事情。構建具有多個視圖的頁面

在我看來,URL結構只允許一個控制器實例化,併爲此一次只顯示一個視圖(並且只有一個) - 不在頁面上放置多個視圖。在這裏搜索我已經看到參考MVC Contrib子控制器,但我無法在http://www.codeplex.com/MVCContrib網站上看到它們以進一步檢查它們嗎?

子控制器會走的路嗎?如果是這樣,我現在可以在哪裏找到它們。如果不是,你會建議什麼?

+0

當你談論*多頁視圖*時,你可能指的是**網頁部分**? – 2009-11-04 12:23:17

+0

我指的是像Web部件這樣的東西:但是每個部件都有自己的控制器。 Model ViewViewView ControllerControllerController M(VC)n ???類型的東西,也許控制器可以相互傳遞信息,但肯定不會對彼此的觀點產生影響。類似於放棄幾個iframe的(可怕的)概念,每個iframe都指向一個頁面上自己的MVC URL。 – Andiih 2009-11-04 14:30:43

回答

2

如果您想堅持使用asp.net mvc,那麼您可以使用部分視圖,它將/應該爲您提供「Web部件」類型的功能,它聽起來像您想。然後,您可以根據主頁面視圖上的權限等限制您想要看到的部分視圖(這可以通過基本控制器類或其他方式顯示)。

我已經做了一些搜索,並拿出你可能會發現有用的幾個環節...

Jeffrey Palermo - 兼談模板化的局部視圖

Rob Conery - 使用用戶控件與ASP。淨MVC

mikesdotnetting.com - ASP.NET MVC局部視圖和強類型的自定義的ViewModels(不讀了這一切,但它看起來相當usefu)

希望這有助於。

+0

Thx。將研究這些。 – Andiih 2009-11-04 14:24:22

+0

謝謝。我要走這條路。部分視圖可以很好地工作,但它需要一個胖控制器令人慚愧 - 將控制器邏輯分離成它們控制的實體本來就不錯。 – Andiih 2009-11-06 08:56:41

0

控制器不受任何特定視圖的約束。根據您的業務邏輯,控制器/操作可以顯示您想要的任何視圖。

編輯 您可以隨時嘗試寫HtmlHelpers和部分視圖。這些是你應該用來代替webforms的服務器控件和用戶控件。

+0

問題是我需要在單個頁面上顯示具有獨立行爲的多個事物。理想情況下,這將是多個獨立控制器的多個視圖。 – Andiih 2009-11-04 13:36:26

0

聽起來你正在服用約2不同的東西:在頁面上

  • 添加項目的Web部件不ASP.NET MVC
  • 有使用控制器來選擇哪個視圖顯示沒有問題,但一次只能顯示一個。

編輯

你所希望做既需要SharePoint和asp.net的MVC。有可能將這些組合起來,請參閱:Using Asp.Net MVC with SharePoint

+0

我編輯了這個問題,試圖澄清。我正在尋找類似於ASP.NET MVC的webparts。我明白控制器可以選擇顯示哪個視圖。它不能選擇多個視圖,也不能有多個控制器和視圖對同一頁面起作用:這就是我想要的! – Andiih 2009-11-04 14:23:04

1

看看期貨套件,它是RenderAction()的實現。雖然它不是純粹的MVC,但它們基本上可以用作小部件。它們從視圖中調用並通過單獨的控制器,然後呈現局部視圖。這聽起來像你可能正在尋找的東西。

下面是一個例子...

//Various view data 

<div id="user-info"> 
    <% Html.RenderAction("UserInfo"); %> 
</div> 

//Rest of view data 

這將在當前控制器上尋找名爲「UserInfo」的操作方法。然後,該控制器可以完成它需要做的事情,並將結果發送到部分視圖,該部分視圖將代替Html.RenderAction()進行渲染。

相關問題