Ho un'app Web MVC4 e attualmente ho alcuni @helper
che uso su più pagine, definite in cshtml. Il problema è che devo definirli su ogni pagina che vengono utilizzati. È possibile creare un file .cshtml
che contenga tutti i miei @helper
e includerlo nelle mie visualizzazioni?Spostare gli helper del rasoio comuni su un altro file
Ad esempio, questo viene utilizzato su ogni vista Indice nell'area dei cm.
@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>
}
Stessa definizione, stesso codice, stessa cosa, ma è nel codice di almeno 15 volte.
Dipende da quello che il corpo di questi metodi sono, ma ti consiglierei solo dispone di un file classe statica ('.cs') che ha tutte le funzioni comuni. Puoi includere quel file nel tuo file '.cshtml' con' @include MyProject.MyHelpers' per esempio. – musefan
Ho aggiornato il codice per rendere più semplice la risposta – bizzehdee
La possibilità di definire metodi helper riutilizzabili usando la sintassi @helper è disponibile, vedere quanto segue: http://weblogs.asp.net/scottgu/archive/ 2011/05/12/asp-net-mvc-3-and-the-helper-syntax-within-razor.aspx –