2012-09-24 29 views
0

我有一個MVC3 C#.Net網絡應用程序。我有兩個視圖顯示相同的HTML表格。但是,每個視圖代表一個不同的模型。查看1 =「ProposalEdit」,查看2 =「DocEdit」。這兩個議案模型和文檔模型有一個屬性:MVC3中的可重用代碼C#.Net

ICollection<Deliverable> Deliverables. 

在每個編輯的意見,我展示交付屬於該視圖的模式。在每個編輯視圖中都是相同的代碼,只有編輯視圖背後的模型不同。所以,有很多重複的代碼。

如何模塊化以減少重複代碼?

+0

你可能正在尋找這樣的東西:http://stackoverflow.com/a/7495623/438275 – Josh

+0

@Josh ...有趣!看起來我會在ViewModel中封裝Proposal和Doc,然後爲Deilverables表創建一個共享的DisplayTemplate。那是你怎麼讀的? – MikeTWebb

+1

@Mike,我甚至不知道你想包裝提案和文檔......只是ICollection 類型的共享顯示模板應該這樣做。 – KennyZ

回答

1

@Mike,這正是我要做的。主要的一點是爲每個模型配備DisplayTemplates。即使一個DateTime對象可以有一個DisplayTemplate如果你想。

編輯:

下面是一個使用DisplayTemplate對於剛剛交付模型的例子

@model ICollection<Deliverables> 

@foreach (var deliverable in this.Model) 
{ 
    @this.Html.DisplayFor(d => deliverable) 
} 

你也會的,當然,有下~\Shared\DisplayTemplates\Deliverables.cshtml~\Shared\EditorTemplates\Deliverables.cshtml

下編輯模板
+0

@Josh ...謝謝。 – MikeTWebb

+0

@Josh ......我其實覺得這個問題有點棘手?我們一直在討論一個通用的DisplayFor模板。它將應用於所有PersistentGenericSet'1列表。我只想要特定於可交付成果的內容。 – MikeTWebb

+0

然後爲交付物模型製作DisplayTemplate,然後在集合中循環。看到我上面的編輯。 – Josh