2011-10-11 46 views
1

我有我想MVC3服務到客戶端頁面的網頁的部分。而不是讓他們在永恆之中保持靜態。我有一些網站會在頁面的某些部分重新產生標記,例如橫幅,導航等。在一些網站中,我需要定製一些標記。所以我需要能夠延長如果可能的話。HTML標記和ASP.NET MVC3

有人可以告訴我,如果MVC3是理想的解決方案嗎?我正在考慮部分意見。你可以繼承&擴展部分視圖嗎?

感謝

回答

0

局部視圖可以爲您的需求來實現。例如,您可以按以下方式使用它們:

@model string[] 

    @if((bool)Model[0]) { 

    <span>I like it to be this way.</span> 

    } else { 

     <span>No, I like it to be that way.</span> 
    } 

內部的視圖,可以按如下方式調用這個局部視圖:

@Html.Partial("myPartialView", new string[] { "true" }) 

你幾乎可以通過任何局部視圖Model

如果您打算在多個應用程序中使用這些部分視圖,我鼓勵您爲這些部分視圖創建Nuget包,並通過Nuget Package Manager將它們放到每個應用程序中。

+0

,所以我想你不能「繼承」部分的看法? – River

+0

@ user742276你想使用它們作爲模板嗎?如果是這樣,你要找的是Layouts not Partials。 – tugberk

+0

請問您可以通過使用Layout來說明您的意思嗎? – River

0

橫幅,導航,自定義面板等 - 所有這些都是隨着時間的推移您可能想要添加,組合,刪除或更新的組件。是的,部分意見可以輕鬆完成這項工作,但在我看來,繼承並不是一種前進的方式。

您的部分視圖應該基於視圖模型。例如:OrderPanelViewModel,UserMenuViewModel,CustomPanelViewModel。每個局部視圖現在都是一個組件,您可以根據需要添加,刪除或修改這些功能。

如果要將橫幅和用戶菜單組合起來會發生什麼?如果它們從相同的視圖模型繼承,它將無法工作,但如果它們有自己的視圖模型,它將起作用。

例如:

public class MyCustomPaneViewModel{ 
    public UserMenuViewModel UserMenu { get; set; } 
    public UserBannerViewModel UserBanner { get; set; } 
} 

您現在可以立足視圖這個視圖模型

@model YourDll.WebUI.Models.MyCustomPaneViewModel 

@section main_content{ 

    @Html.DisplayFor(model => model.UserMenu, "UserMenu") 
    @Html.DisplayFor(model => model.UserBanner, "UserBanner") 

} 
+0

感謝您的解釋但是這種方法仍然讓我不得不在MVC3之外存儲標記。我希望我可以將標記集成到視圖中... – River

+0

在mvc3之外說什麼意思?第一個代碼片段是你的M-模型,第二個是你的V-view – 2011-10-12 06:54:55

+0

標記必須存在一些地方,所以我現在有他們在XML,XSL文件。使用這個模型,我仍然需要從XML/XSL內容文件中讀取它們。我希望能夠抽象MVC結構中的內容,因爲我更喜歡代碼而不是XML/XSL。 – River