2013-03-07 69 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

我以现在这个排序替换部分视图的标签。

非常感谢。

相关问题