如何声明HTML / Razor的一部分包含在同一视图中

时间:2013-11-18 14:57:27

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

MVC Razor是否可以在视图中定义要在同一视图中使用的部分?

例如:

@section menu {
    @*Some code and markup here*@
}

//page continues here...

@RenderSection(menu)

这与用于将脚本提取到_layout文件底部的代码相同,但是当它是同一文件的一部分时,您不能使用它。

目前我一直在使用:

var menu = "@*Some code and markup here*@";

//page continues here...

@Html.Raw(menu)

但这并不理想,因为没有智能感知,一旦内容增长就会变得非常混乱。

提前致谢,

威尔

1 个答案:

答案 0 :(得分:4)

在你的情况下......你可以使用Razor Helper而不是Section。

您可以在同一视图中定义一段或多次需要使用/重复使用的代码:

@helper  MyMenu(int param1, string param2){
   //Your logic and markup here.
}

然后,在视图的底部,您可以使用它:

@MyMenu(1, "foo")