2012-09-04 83 views
0

是否可以使用MVC機制來創建可重複的佈局? 例如: 我們在整個演出中都有HTML片段,它們必須具有相同的元素和屬性,但可以有單獨的內容(內容也可以是一堆HTML)。MVC中的重複佈局Razor

我傾向於HTML幫手,但這似乎並不允許這樣的事情:

@Html.Business(Name, Attr2) 
{ 
    <em>Do Not Contact</em> 
    <p>Arbitrary text</p> 
} 
@Html.Business(Name, Attr2) 
{ 
    <table>...</table> 
} 

這裏的關鍵點是,嵌入HTML是任意的,不會有可用的參數幫助者方法。

感謝, 雅克

+2

部分視圖也許? – 2012-09-04 13:57:11

+0

你可能指的是佈局部分?只需創建一個視圖(.vbhtml或.cshtml)並使用@ Html.Partial(「YourViewName」) – user1477388

+0

好的,你能舉個例子嗎?就我所知,Partial需要一個Model,在這種情況下,情況並非一定如此,但我們可能仍然希望將變量作爲參數傳入?我願意重新考慮這一點。 – Jacques

回答

0

你混合了佈局和模板。佈局是作爲所有視圖的公共容器的基礎框架。模板(您應該查找的內容)是顯示特定(通常特定)類型的數據的一種方式。

有兩種實現模板的基本方法。


第一個是將其定義爲默認模板。這是通過一個簡單的命名約定完成的。只要確保你的.cshtml文件具有相同的名稱作爲實體類的名字,並將其放置在:

/Views/Shared/DisplayTemplates/.cshtml

在那之後,每當你想顯示你的實體使用模板,使用@Html.DisplayFor()幫助器,相應地提供你的對象。或者,如果您希望以不同的方式調用模板或不希望在任何情況下都使用該模板,則可以在實體上使用[UIHint("TemplateName")]屬性指定模板名稱,或在DisplayFor()中傳遞模板名稱)。


第二種方法是使用部分視圖。

  • 右鍵點擊:您可以創建你想如何顯示數據,並使用@Html.RenderPartial("TemplateName", object)


    在這兩種情況下的局部視圖,模板/局部視圖可以伊斯利與VS界面創建在DisplayTemplate(或其他位置)文件夾要建立在你的模板,然後點擊Add>View...

  • 鍵入名稱,檢查Create a strongly-typed view
  • 選擇適當的對象(如果你不能找到它,你可以手動後做,但我建議至少撿東西簡化工作)
  • 選擇Details作爲腳手架模板
  • 檢查Create as partial view
  • 取消選中Use a layout or master page

確保@model <Entity Name>與您將要通過的對象相匹配,然後進行任何修改以希望如何顯示它。

享受!

- 編輯 -

注:讀您的文章再次之後,我意識到可能不是你問什麼了,但它是非常不清楚。你能否更詳細地解釋你想要達到什麼效果而不是你想要做什麼?

你寫的代碼片段並沒有什麼意義。