2013-03-07 71 views
1

我使用的是MVC3,C#和Razor。用Razor替換{mySection}類型標籤的好方法是什麼?

我有模板paragraghs,它們存儲和編輯在DB,等

「的銷售數據可以被表示如下:{SalesTable1}」

我希望替代{SalesTable1}位與一些代碼的結果(最有可能的剃刀),其遍歷「銷售」類,即

<table> 
@foreach var item in Sales 
{ 
<tr> 
<td>@item.Product</td> 
<td>@item.Sales</td> 
</tr> 
} 
</table> 

以上代碼可能是不完全正確,但它給出了這個概念。

在XSLT中,會調用一個名爲「SalesTable1」的「模板」。

什麼是在Razor中解決這個問題的好方法?順便說一下,我使用的ViewModel,我可以把我的模板數據和我的真實數據進行處理我的視圖。

謝謝。

編輯:如果有更好的方法,我不需要在模板中使用{MySection}類型標籤(特別是)。但是,「管理員」可以在應用程序中編輯這些標籤周圍的文本,這一點很重要。

編輯2:我有一個主視圖,根據不同的主題類型調用不同的部分視圖。在每個部分視圖中,我希望用部分視圖中指定的運行時@section模板替換{tags}。這似乎不起作用。我猜是因爲「RenderSection」命令應該出現在佈局或父視圖中。

編輯3:我想我會更好使用從我的部分視圖中的另一個RenderPartial。不過,我不確定如何用@ {Html.RenderPartial(「myTable」);}替換{myTable}標籤。

<text>This is a test sentence. {myTable} After table </text> 

產生:

<text>This is a test sentence. @{Html.RenderPartial("myTable");} After table </text> 

最後,我確實有在這種方法的一個問題,如果「mytable的」部分不存在,或者{myTable的}拼寫錯誤,即{MyTablee}然後該應用程序會崩潰。我希望它只是繼續運行而不運行部分視圖。

回答

1

您可以使用MVC3節......他們的定義如下..

@section SideBar { 
// Side bar code... 
} 

那麼當你需要使它們,你只需撥打

@RenderSection("SideBar"); 

有一個偉大的職位由在這裏GU ...

http://weblogs.asp.net/scottgu/archive/2010/12/30/asp-net-mvc-3-layouts-and-sections-with-razor.aspx

+0

感謝您的支持。但我不確定它會解決我的問題,因爲我有一個主視圖,然後呈現部分視圖。控制「RenderSection」命令的邏輯存在於部分視圖中。似乎不能調用包含「RenderSection」命令的部分視圖。也許這是因爲「RenderSection」是頂級命令,只能在佈局視圖中使用?更多細節在上面的「編輯」中。 – EdB 2013-03-07 22:56:21

+0

我在EDIT3中添加了更多的評論,描述了更多的想法。提前感謝任何幫助。 – EdB 2013-03-07 23:33:52

+0

標記爲讚賞的幫助,雖然不是我的問題的答案。非常感謝。 – EdB 2013-03-08 01:29:12

0

我以現在這個排序替換部分視圖的標籤。

非常感謝。

相關問題