我正在使用 MVC3、C# 和 Razor。
我有模板段落,它们在数据库中存储和编辑,比如
"销售数据可以如下所示:{SalesTable1}"
我希望将 {SalesTable1} 位替换为迭代“Sales”类的一些代码(很可能是剃刀)的结果,即
<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},这些模板也在局部视图中指定。这似乎不起作用。我猜是因为“RenderSection”命令应该出现在布局或父视图中。
EDIT3:我认为我最好从我的部分视图中使用另一个 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},那么应用程序将崩溃。我希望它在不运行局部视图的情况下继续运行。