12

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

即,这用于 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 次。

4

1 回答 1

13

这是实现这一目标的说明

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

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

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

  3. 将现有内容替换为以下内容:

    @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 的新帮助程序。这个特殊的帮助器允许您传递一个名为 content 的参数,该参数可以包含文本和标记的组合。助手使用 @content 变量将字符串插入到笔记正文中。

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

  4. 保存并关闭文件。

从这篇文章中复制过来

于 2013-08-06T16:24:03.297 回答