使用Razor替换{mySection}类型标签的好方法是什么?

时间:2013-03-07 12:23:16

标签: asp.net-mvc-3 razor asp.net-mvc-4

我正在使用MVC3,C#和Razor。

我有模板paragraghs,它们在DB中存储和编辑,如

“销售数据可以显示如下:{SalesTable1}”

我希望将{SalesTable1}位替换为遍历“Sales”类的一些代码(很可能是razor)的结果,即

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

上面的代码可能不太正确,但它显示了这个想法。

在XSLT中,人们会称一个名为“SalesTable1”的“模板”。

在Razor中解决这个问题的好方法是什么?顺便说一下,我正在使用ViewModel,我可以将我的模板数据和我的真实数据放入我的View中进行处理。

感谢。

编辑:如果有更好的方法,我不需要模板中的{MySection}类型标签(特别是)。但是,“管理员”可以编辑应用程序中这些标记周围的文本。

EDIT2:我有一个主视图,根据不同的主题类型调用不同的部分视图。在每个部分视图中,我希望用运行时@section模板替换{tags},这些模板也在Partial View中进行了特定。这似乎不起作用。我猜因为“RenderSection”命令应出现在布局或父视图中。

EDIT3:我想我会更好地使用Partial View中的另一个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},则应用程序将崩溃。我希望它能在不运行局部视图的情况下继续运行。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

我现在已经使用替换部分视图的标签对此进行了排序。

非常感谢。