C# 将常用剃须刀帮助程序移动到另一个文件

C# 将常用剃须刀帮助程序移动到另一个文件,c#,asp.net-mvc-4,razor,C#,Asp.net Mvc 4,Razor,我有一个MVC4 web应用程序,目前我有一些@helper,我在cshtml中定义的多个页面上使用它们。问题是,我必须在使用它们的每一页上定义它们。是否可以创建一个包含所有我的@helper的.cshtml文件,并将该页面包含到我的视图中 i、 e.这用于cms区域中的每个索引视图 @helper DisplayPager(Int32 CurrentPage, Int32 MaxPages) { String IsActive = ""; <div class="pagi

我有一个MVC4 web应用程序,目前我有一些
@helper
,我在cshtml中定义的多个页面上使用它们。问题是,我必须在使用它们的每一页上定义它们。是否可以创建一个包含所有我的
@helper
.cshtml
文件,并将该页面包含到我的视图中

i、 e.这用于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>
}
@helper DisplayPager(Int32 CurrentPage、Int32 MaxPages){
字符串IsActive=“”;
  • @对于(int i=0;i }
}

相同的定义、相同的代码、相同的一切,但现在代码中至少出现了15次

本过程向您展示了如何创建创建注释的辅助对象,如前所述。这是一个简单的示例,但是自定义帮助程序可以包含您需要的任何标记和ASP.NET代码

  • 在网站的根文件夹中,创建一个名为App_Code的文件夹。这是ASP.NET中的一个保留文件夹名称,您可以在其中为帮助器之类的组件放置代码

  • 在App_Code文件夹中创建一个新的.cshtml文件,并将其命名为MyHelpers.cshtml

  • 将现有内容替换为以下内容:

    @helper MakeNote(string content) 
    {
      <div class="note" 
           style="border: 1px solid black; width: 90%; padding: 5px; margin-left: 15px;">
        <p>
          <strong>Note</strong>&nbsp;&nbsp; @content
        </p>
      </div>
    }
    
    @helper MakeNote(字符串内容)
    {
    
    注意@内容
    

    }
    代码使用@helper语法声明一个名为MakeNote的新助手。此特定帮助器允许您传递名为content的参数,该参数可以包含文本和标记的组合。助手使用@content变量将字符串插入注释正文

    请注意,文件名为MyHelpers.cshtml,但助手名为MakeNote。可以将多个自定义帮助程序放入一个文件中

  • 保存并关闭文件


  • 从这里复制它

    这取决于这些方法的主体是什么,但我建议您只使用一个静态类文件(
    .cs
    ),其中包含所有常用函数。例如,您可以使用
    @include MyProject.MyHelpers
    将该文件包含在
    .cshtml
    文件中。我已经更新了代码,以便更容易回答问题。如果可以使用@helper语法定义可重用的helper方法,请参见以下内容:这很有效,而且似乎是执行此操作的标准方法,但这是一个非常可怕的黑客行为。为什么微软决定将App_代码作为放置共享助手的地方,而不是我。视图应位于“视图”文件夹中。这完全违反直觉。