2013-07-11 10 views
14

Mam poniżej funkcję, którą chciałbym udostępnić kilku widokom .cshtml w mojej aplikacji internetowej asp.net 2. Jak mogę udostępnić tę funkcję dla dowolnego widoku w aplikacji (w przeciwieństwie do jednego).Używanie funkcji Razor @ na kilku stronach internetowych (pliki .cshtml)

@functions { 

    public bool DisplayButton(String startDate, String endDate) 
    { 
     return Convert.ToDateTime(startDate) < DateTime.Now && Convert.ToDateTime(endDate) > DateTime.Now; 
    } 
} 
+0

Possible duplicate, http://stackoverflow.com/questions/6347447/shared-mvc-razor-functions-in-several-views – Phas1c

+2

Nie próbuję używać pomocnika. – Robert

Odpowiedz

20

Utwórz plik o nazwie Functions.cshtml w App_Code, a następnie wklej kod do pliku. Następnie można wywołać metodę DisplayButton w dowolnym pliku .cshtml poprzedzając go z nazwą pliku:

var myBool = Functions.DisplayButton(DateTime.Now, DateTime.Now.AddDays(30)); 

Więcej informacji na temat pracy z funkcjami i pomocników w ASP.NET Web Pages, przeczytaj to: http://www.mikesdotnetting.com/Article/173/[email protected]@Functions-In-WebMatrix

+0

To jest dokładnie to, czego potrzebowałem. Dziękuję Ci. – Robert

+0

Czy nadal działa? –

+0

Mam ten komunikat o błędzie. CS0120: Odniesienie do obiektu jest wymagane w przypadku niestatycznego pola, metody lub właściwości "Funkcje.AgoDataString() ' –

2

Można zdefiniować „globalne” funkcje pomocnicze w pliku Razor w katalogu AppCode jak opisano tutaj: http://weblogs.asp.net/scottgu/archive/2011/05/12/asp-net-mvc-3-and-the-helper-syntax-within-razor.aspx. Pomocnicy renderują tylko elementy strony; nie mogą zwrócić wartości (lub bardziej poprawnie, zwróconą wartością jest znacznik HTML do renderowania).

Jeśli musisz zwrócić wartość, Twój najlepszy zakład jest metodą rozszerzenia.

+3

Słowo kluczowe function służy do definiowania funkcji (metody), która zwraca wartość zdefiniowaną przez sygnaturę metody. Słowo kluczowe helper definiuje szablon maszynki do golenia, który renderuje HTML. –

1

nie rozumiem, dlaczego nie można mieć klasę statyczną z metodą statyczną i po prostu umieścić go na górze każdego widoku, a następnie użyć go

+0

, ponieważ musisz kompilować za każdym razem, gdy modyfikujesz klasę – MatteoSp

Powiązane problemy