2013-08-06 17 views
8

Mam aplikację internetową MVC4 i obecnie mam kilka @helper, których używam na wielu stronach, zdefiniowanych w cshtml. Problem polega na tym, że muszę je zdefiniować na każdej stronie, z której są używane. Czy jest możliwe utworzenie pliku .cshtml zawierającego wszystkie moje @helper i dołączenie tej strony do moich widoków?Przenoszenie pomocników maszynki do golenia do innego pliku

tj. Jest używany w każdym widoku indeksu w obszarze 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> 
} 

Ta sama definicja, ten sam kod, to samo wszystko, ale jest w kodzie co najmniej 15 razy.

+0

To zależy, co organizm z tych metod są, ale polecam po prostu mieć statyczny plik klasy ('.cs'), który ma wszystkie typowe funkcje w. Możesz dołączyć ten plik do pliku '.cshtml' z' @include MyProject.MyHelpers' na przykład. – musefan

+0

Mam zaktualizowany kod, aby ułatwić odpowiedź – bizzehdee

+0

Jest to możliwość zdefiniowania metod wielokrotnego użytku pomocnika przy użyciu składni @helper jest dostępna, patrz: http://weblogs.asp.net/scottgu/archive/ 2011/05/12/asp-net-mvc-3-and-the-helper-syntax-within-razor.aspx –

Odpowiedz

10

Oto instrukcje do osiągnięcia tego

Procedura ta pokazuje, jak utworzyć pomocnika, który tworzy notatkę, jak opisano powyżej. Jest to prosty przykład, ale niestandardowy helper może zawierać dowolny znacznik i kod ASP.NET, którego potrzebujesz.

  1. W folderze głównym witryny utwórz folder o nazwie Kod_użytkownika. Jest to zastrzeżona nazwa folderu w programie ASP.NET, w której można umieścić kod komponentów, takich jak helpery.

  2. W folderze App_Code utwórz nowy plik .cshtml i nadaj mu nazwę MyHelpers.cshtml.

  3. Wymień istniejących treści z następujących czynności:

    @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> 
    } 
    

    Kod wykorzystuje składnię @helper uznaniu nowego pomocnika nazwie MakeNote. Ten konkretny helper umożliwia przekazanie parametru o nazwie content, który może zawierać kombinację tekstu i znaczników. Pomocnik wstawia ciąg do treści nuty przy użyciu zmiennej @content.

    Należy zauważyć, że plik ma nazwę MyHelpers.cshtml, ale pomocnik nosi nazwę MakeNote. Możesz umieścić wielu niestandardowych pomocników w jednym pliku.

  4. Zapisz i zamknij plik.

skopiowałeś z tym article

+5

To działa, i wydaje się być standardowym sposobem, aby to zrobić, ale jest to tak straszne hack. Dlaczego Microsoft zdecydował App_Code było miejsce, aby umieścić współużytkowanych pomocników poza mną. Widoki powinny znajdować się w folderze Widoki. Jest to całkowicie sprzeczne z intuicją. – user1751825

Powiązane problemy