Czy jest jakiś rodzaj magii, którego potrzebuję, aby uzyskać przestrzenie nazw w pages/namespaces
elemencie w webconfig?
<pages>
<namespaces>
<add namespace="System.Web.Mvc"/>
<add namespace="System.Web.Mvc.Ajax"/>
<add namespace="System.Web.Mvc.Html"/>
<add namespace="System.Web.Routing"/>
<add namespace="System.Web.WebPages"/>
<add namespace="System.Web.Helpers"/>
<add namespace="MyCustomHelpers"/>
</namespaces>
</pages>
Powyższe po prostu nie chce działać. Wiem, że przestrzeń nazw jest w porządku, ponieważ kiedy umieszczam znak @using MyCustomHelpers
na górze strony, działa magicznie.
Ma to na celu umożliwienie mi Html.SomeFunction()
działania bez konieczności umieszczania @using
na górze wszystkich moich stron
asp.net-mvc-3
razor
MyNameIsJob
źródło
źródło
<system.web.webPages.razor>
konfiguracji powinna już istnieć w THAT Web.Config!Odpowiedzi:
Aktualizacja : spójrz na moją zaktualizowaną odpowiedź, która dotyczy MVC 3 RC: Razor HtmlHelper Extensions (lub innych przestrzeni nazw dla widoków) Nie znaleziono
Zmieniło się to między MVC 3 Preview 1 i MVC 3 Beta (wydanym właśnie dzisiaj). W wersji zapoznawczej 1 Razor użył sekcji konfiguracji przestrzeni nazw WebForms. Jednak w wersji beta jest nowa sekcja konfiguracji, która jest oddzielna od sekcji WebForms. Będziesz musiał dodać follwing do swojego pliku web.config (lub po prostu zacznij od zupełnie nowego projektu z szablonu):
Pamiętaj , że może być konieczne zamknięcie i ponowne otwarcie pliku, aby zmiany zostały odebrane przez redaktora.
Zwróć uwagę, że istnieją inne zmiany w tym, co jest wymagane w pliku web.config, aby Razor działał w MVC3 Beta, więc najlepiej przyjrzeć się
~\View\Web.config
plikowi, który jest dostarczany w szablonach projektów Beta.źródło
pageBaseType="System.Web.Mvc.WebViewPage"
atrybut jest również wymagany. Zaktualizowałem twoją odpowiedź.Jeśli umieścisz deklarację przestrzeni nazw w
Web.config
głównym folderze „Widoki” i / lub w folderze „Widoki” bieżącego obszaru (w zależności od tego, gdzie jest twój widok) - powinno działać zgodnie z oczekiwaniami.źródło
Znalazłem http://weblogs.asp.net/mikaelsoderstrom/archive/2010/07/30/add-namespaces-with-razor.aspx, który wyjaśnia, jak dodać niestandardową przestrzeń nazw do wszystkich stron maszynki do golenia.
Zasadniczo możesz to zrobić
i umieść następujący kod w swoim AssemblyInfo.cs
metoda InitializeApplication zostanie wykonana przed Application_Start w global.asax
źródło
Inną techniką jest po prostu umieszczenie pomocniczej klasy rozszerzenia w przestrzeni nazw System, która jest już domyślnie uwzględniona przez silnik widoku. Na przykład:
W ten sposób, dopóki istnieje odwołanie do biblioteki zawierającej klasę, wszystko ją zobaczy. Ponieważ rozszerzasz
System.Web.Mvc
klasę, wydaje się rozsądnie dopuszczalne umieszczenie metod rozszerzających w tej samej przestrzeni nazw.źródło
Spróbuj zamknąć i ponownie otworzyć widok po upewnieniu się, że zmiany zostały wprowadzone w pliku web.config w katalogu głównym widoku.
Zamknięcie i ponowne otwarcie rozwiązało mój problem.
Spójrz tutaj:
Problem z przestrzenią nazw ASP.NET MVC 4 w widoku Razor
źródło