1

我正在使用 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},那么应用程序将崩溃。我希望它在不运行局部视图的情况下继续运行。

4

2 回答 2

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

于 2013-03-07T12:27:10.147 回答
0

我现在通过替换部分视图的标签对此进行了排序。

非常感谢。

于 2013-03-08T01:27:52.407 回答