Existe algum tipo de mágica que eu preciso usar para obter os espaços para nome no pages/namespaces
elemento no 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>
O item acima simplesmente não quer funcionar. Eu sei que o espaço para nome é bom porque, quando coloco @using MyCustomHelpers
o topo da página, ele funciona magicamente.
Isso é para que eu possa Html.SomeFunction()
trabalhar sem precisar colocar @using
no topo de todas as minhas páginas
asp.net-mvc-3
razor
MyNameIsJob
fonte
fonte
<system.web.webPages.razor>
seção de configuração já deve existir no THAT Web.Config!Respostas:
Atualização : dê uma olhada na minha resposta atualizada que se aplica ao MVC 3 RC: Razor HtmlHelper Extensions (ou outros namespaces para visualizações)
Isso mudou entre o MVC 3 Preview 1 e o MVC 3 Beta (lançado hoje mesmo). Na pré-visualização 1, o Razor usou a seção de configuração dos espaços para nome do WebForms. No entanto, na versão beta, há uma nova seção de configuração separada da WebForms. Você precisará adicionar o seguinte ao seu arquivo web.config (ou apenas começar com um novo projeto do modelo):
Observe que pode ser necessário fechar e reabrir o arquivo para que as alterações sejam selecionadas pelo editor.
Observe que há outras alterações no que é necessário no web.config para que o Razor funcione no MVC3 Beta; portanto, é melhor dar uma olhada no
~\View\Web.config
arquivo enviado nos modelos de projeto Beta.fonte
pageBaseType="System.Web.Mvc.WebViewPage"
atributo também é necessário. Atualizei sua resposta.Se você colocar sua declaração de namespace na
Web.config
pasta raiz "Views" e / ou na pasta "Views" da área atual (dependendo da localização da sua visualização) - ela deverá funcionar conforme o esperado.fonte
Encontrei este http://weblogs.asp.net/mikaelsoderstrom/archive/2010/07/30/add-namespaces-with-razor.aspx, que explica como adicionar um espaço para nome personalizado a todas as suas páginas de barbear.
Basicamente, você pode fazer isso
e coloque o seguinte código no seu AssemblyInfo.cs
o método InitializeApplication será executado antes do Application_Start em global.asax
fonte
Para o que vale, outra técnica é simplesmente colocar sua classe de extensão auxiliar em um espaço para nome do sistema que já está incluído no mecanismo de exibição por padrão. Por exemplo:
Dessa forma, desde que a biblioteca que contém a classe seja referenciada, tudo o verá. Como você está estendendo uma
System.Web.Mvc
classe, parece razoavelmente aceitável colocar os métodos de extensão no mesmo espaço para nome.fonte
Tente fechar e reabrir a exibição depois de verificar se as alterações foram feitas no web.config na raiz da exibição.
Fechar e reabrir resolveu meu problema.
Veja aqui:
Problema de namespace do ASP.NET MVC 4 na exibição de navalha
fonte