Muszę utworzyć funkcję, która jest niezbędna tylko w jednym pliku cshtml. Możesz myśleć o mojej sytuacji jako o metodach strony ASP.NET, które są minimalnymi usługami sieciowymi zaimplementowanymi na stronie, ponieważ są one ograniczone do jednej strony. Wiem o pomocnikach HTML (metodach rozszerzenia), ale moja funkcja jest potrzebna tylko w jednym pliku cshtml. Nie wiem, jak utworzyć podpis funkcji w widoku. Uwaga : używam silnika szablonów Razor.
asp.net-mvc
asp.net-mvc-3
razor
Saeed Neamati
źródło
źródło
@functions
metod, więc podoba mi się ta odpowiedź.dlaczego nie zadeklarować tej funkcji w pliku cshtml?
źródło
functions
rozwiązanie zapewnia większą elastyczność w zakresie typowania zwrotów. Obie odpowiedzi otrzymują +1 w mojej książce, ponieważ są one użytecznymi ciekawostkami.<p>Welcome, @username.</p>
porównaniu doreturn new HtmlString("<p>Welcome, " + Html.Encode(username) + ".</p>");
.@helper
w jednym widoku nie udostępnia go innym widokom. powodem, dla którego lubię @helper, jest to, że możesz umieścić HTML między nawiasami klamrowymi.@functions
nie pozwala (łatwo) na to.@helper
i@functions
mogą być dzielone między wielu widoków, i oba mogą być zadeklarowane do i używane przez jednego widzenia (i ja osobiście znaleźć zastosowanie dla nich w obu shared / pojedynczych scenariuszy). IMHO jedyną praktyczną różnicą między nimi jest to, że pomocnik widoku dodaje cukier składniowy do zwracania renderowanych fragmentów HTML (lub, bardziej odpowiednio,HelperResult
instancji), podczas gdy funkcja widoku jest zwykle przydatna tylko do zwracania prostych typów referencji lub wartości.Jeśli twoja metoda nie musi zwracać html i musi zrobić coś innego, możesz użyć lambda zamiast metody pomocniczej w Razor
źródło
Spójrz na deklaratywnych pomocników Razor
źródło
Jeśli chcesz uzyskać dostęp do zmiennych globalnych strony, możesz to zrobić:
źródło
GetLoadingState()
tutaj jest funkcja lokalna.