【发布时间】:2013-08-06 16:10:52
【问题描述】:
我有一个 MVC4 网络应用程序,我目前有几个 @helper 用于多个页面,在 cshtml 中定义。问题是,我必须在它们使用的每个页面上定义它们。是否可以创建一个包含我所有@helper 的.cshtml 文件并将该页面包含到我的视图中?
即这用于 cms 区域中的每个索引视图。
@helper DisplayPager(Int32 CurrentPage, Int32 MaxPages) {
String IsActive = "";
<div class="pagination pagination-centered">
<ul>
<li><a href="@Url.Action("Index", new { id = CurrentPage - 1 > 0 ? CurrentPage - 1 : 1 })">Prev</a></li>
@for (int i = 0; i < MaxPages; i++)
{
IsActive = ((i + 1) == CurrentPage) ? "active" : "";
<li class="@(IsActive)"><a href="@Url.Action("Index", new { id = i + 1 })">@(i + 1)</a></li>
}
<li><a href="@Url.Action("Index", new { id = CurrentPage + 1 < MaxPages ? CurrentPage + 1 : MaxPages })">Next</a></li>
</ul>
</div>
}
相同的定义,相同的代码,相同的一切,但它现在至少出现在代码中 15 次。
【问题讨论】:
-
这取决于这些方法的主体是什么,但我建议您只拥有一个包含所有常用功能的静态类文件 (
.cs)。您可以将该文件包含在您的 @ 987654327@ 文件,例如@include MyProject.MyHelpers。 -
我已经更新了代码以便更容易回答
-
可以使用@helper 语法定义可重用的辅助方法,请参阅以下内容:weblogs.asp.net/scottgu/archive/2011/05/12/…
标签: c# asp.net-mvc-4 razor