我正在使用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},则应用程序将崩溃。我希望它能在不运行局部视图的情况下继续运行。
答案 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)
我现在已经使用替换部分视图的标签对此进行了排序。
非常感谢。