Nie wiem, czy to się działo w PR lub Beta, ale jeśli utworzę metodę rozszerzenia na HtmlHelper
, nie zostanie ona rozpoznana na stronie zasilanej Razor:
namespace SomeNamespace.Extensions {
public static class HtmlExtensions {
public static string Foo(this HtmlHelper html) {
return "Foo";
}
}
}
Dodałem go do <Namespaces>
sekcji w Web.config
:
<pages>
<namespaces>
<add namespace="System.Web.Mvc" />
<!-- snip -->
<add namespace="SomeNamespace.Extensions"/>
</namespaces>
</pages>
Ale generuje błąd kompilacji podczas próby wyświetlenia strony:
@Html.Foo()
Jeśli ponownie utworzę stronę za pomocą formularzy internetowych, będzie działać dobrze. O co chodzi?
Obejście problemu
Jeśli uwzględnię @using SomeNamespace.Extensions
w widoku Razor, to działa, ale wolałbym po prostu mieć to wWeb.config
asp.net-mvc-3
extension-methods
razor
html-helper
swilliams
źródło
źródło
Odpowiedzi:
Od wersji beta Razor używa innej sekcji konfiguracji do globalnego definiowania importu przestrzeni nazw. W swoim
Views\Web.config
pliku należy dodać:Użyj narzędzia do aktualizacji MVC 3, aby automatycznie upewnić się, że masz odpowiednie wartości konfiguracyjne.
Pamiętaj , że może być konieczne zamknięcie i ponowne otwarcie pliku, aby zmiany zostały odebrane przez redaktora.
źródło
Jak sugeruje zaakceptowana odpowiedź, możesz dodać „używanie” do wszystkich widoków, dodając do sekcji pliku konfiguracyjnego.
Ale dla jednego widoku możesz po prostu użyć
źródło
Miałem ten sam błąd w aplikacji MVC 4 używającej Razor. Próbując wyczyścić pliki web.config, usunąłem dwie
webpages:
wartości konfiguracyjne:Po przywróceniu tych wartości konfiguracyjnych strony kompilowały się poprawnie, a błędy dotyczące
.Partial()
metody rozszerzenia zniknęły.źródło
Miałem ten problem w VS 2015. Rozwiązano go dla mnie:
Znajdź „strony internetowe: Wersja” w ustawieniach aplikacji i zaktualizuj ją do wersji 3.0.0.0. Mój web.config miał
i zaktualizowałem go do
źródło
Zauważyłem, że umieszczenie tej sekcji w moim pliku web.config dla każdego folderu widoku rozwiązało problem.
źródło
0.0.0.0-2.0.0.0
na1.0.0.0
), a/View/web.config
plik tego nie zastępuje. (Nie wierzę też, że potrzebujesz tego w każdym/View/Subfolder/
)Ten błąd informuje, że nie masz poprawnie powiązanego silnika maszynki do golenia z projektem.
Rozwiązanie: W oknie Eksploratora rozwiązań kliknij prawym przyciskiem myszy projekt sieci Web i wybierz opcję „Zarządzaj pakietami Nuget ...”, a następnie zainstaluj program „Microsoft ASP.NET Razor”. Zapewni to poprawną instalację pakietu i doda niezbędne wpisy do pliku web.config.
źródło
W moim przypadku użyj VS 2013 i nie obsługuje natywnie MVC 3 (nawet jeśli zmienisz ./Views/web.config): https://stackoverflow.com/a/28155567/1536197
źródło
Ponieważ ASP.NET MVC 3 RTM jest już dostępny, nie ma potrzeby sekcji konfiguracji dla Razor. A te sekcje można bezpiecznie usunąć.
źródło