2014-03-05 67 views
0

我很感激技術/策略的任何援助,以實現以下場景:從不同的文件夾ASP.NET MVC負荷查看/局部視圖動態

我們需要有這樣的我們的ASP.NET MVC的文件夾結構5網站

名稱是文件夾和文件名是用擴展名指定的。

網站的文件夾結構:


    • DisplayControls
      • 產品
        • SimpleProductPage
          • SimpleProductPage.cshtml
          • 控制
            • Image.cshtml
            • ProductSpecification.cstml
        • ProductPageWithImageGallery
          • ProductPageWithImageGallery.cshtml
          • 控制
            • ImageGallery.cshtml
            • ProductSpecification.cstml
      • 類別
        • SimpleCategoryPage
          • SimpleCategoryPage.cshtml
          • 控制
            • CateogryProducts.cshtml
            • RelatedProducts.cshtml
        • CategoryPage
          • CategoryPage.cshtml
          • 控制
            • CateogryProducts.cshtml
            • RelatedProducts。CSHTML
    • 控制器
      • someControllerfiles.cs
    • 查看
      • ProductView.cshtml
      • 類別查看。 CSHTML
      • SomeotherViews ......
    • OtherFilesAndFolders

現在,如果我們想請求的產品頁面,然後ProductView.cshtml將控制器和內部的視圖中加載我們想要從基於數據庫條目的「DisplayControls」文件夾加載一些顯示控件。 如果條目說我們需要加載「SimpleProductPage」,那麼我們將從「SimpleProductPage」文件夾加載視圖,即SimpleProductPage.cshtml ,並且該視圖將具有它的控件,即從其控制文件夾加載的部分視圖。如果選定的顯示控件是「ProductPageWithImageGallery」,那麼該文件夾中的視圖將與其子/部分視圖一起加載。

同樣適用於類別頁面,基於數據庫條目,相應的控件/ Biews將從該文件夾中加載。

因此,基本上ProductView.cshtml和CategoryView.cshtml將充當佔位符,並將選定的視圖/ ChildViews加載到他們的運行時。正如你可以看到我們的目標視圖不位於視圖文件夾,所以這對我來說有點問題。

我是新來的MVC,我們正在使用MVC 5,請你幫助我如何實現這一點。

+0

MVC.net使用命名約定來加載視圖,以便在訪問這些視圖的前端頁面時完全清楚,而開發人員不必通過代碼來查找用於加載視圖的邏輯。你的建議是繞過這個功能,所以你可能想在實施之前考慮這一點。但是,是的,你可以實現一個自定義[RazorViewEngine](http://stackoverflow.com/questions/9838766/implementing-a-custom-razorviewengine)來做到這一點 – CodingIntrigue

+1

你可以給一個視圖的位置加載像返回視圖( 「〜/ folder/viewname.cshtml」)或者創建你自己的'Editor'模板。你可以使用'MVC Areas'來保持文件夾結構 –

+0

@Murali我將嘗試執行基於文件夾的位置參數。您能否提出區域如何提供幫助,因爲我認爲區域可以用於分隔應用程序/管理員或/支持,我希望我將事情弄清楚。 – Deepak

回答

0

您需要創建一個自定義視圖引擎,最有可能從Razor視圖引擎繼承,並重寫一個方法來確定在哪裏查找視圖。關於這個問題

一個博客:

http://theshravan.net/blog/configure-the-views-search-locations-in-asp-net-mvc/

+1

請儘可能在您的答案中提供相關代碼。外部網站鏈接不可能保持活力,以幫助任何未來出現同樣問題的人 – CodingIntrigue

+0

@ RGraham,@ ps2goat我不知道我是否可以高效地創建View Engine,因爲我是MVC的新手,但我將嘗試它。 – Deepak

+0

@Rraham,這的確如此,但如果我們在細節上投入大量精力,我不會剽竊別人的代碼。 – ps2goat

0

我上述情況處理的方法是通過創建一個定製視圖引擎,這將載入從指定的文件夾的結構圖。

希望這有助於給某人,

謝謝大家的支持。