Não sei se isso estava acontecendo no PR ou no Beta, mas se eu criar um método de extensão ativado HtmlHelper
, ele não será reconhecido em uma página do Razor:
namespace SomeNamespace.Extensions {
public static class HtmlExtensions {
public static string Foo(this HtmlHelper html) {
return "Foo";
}
}
}
Adicionei-o à <Namespaces>
seção em Web.config
:
<pages>
<namespaces>
<add namespace="System.Web.Mvc" />
<!-- snip -->
<add namespace="SomeNamespace.Extensions"/>
</namespaces>
</pages>
Mas gera um erro de compilação ao tentar visualizar a página:
@Html.Foo()
Se eu recriar a página com WebForms, ela funcionará bem. Qual é o problema?
Gambiarra
Se eu incluir @using SomeNamespace.Extensions
no meu modo de exibição Razor, ele funcionará, mas eu preferiria apenas tê-loWeb.config
asp.net-mvc-3
extension-methods
razor
html-helper
Swilliams
fonte
fonte
Respostas:
Desde o Beta, o Razor usa uma seção de configuração diferente para a importação global de namespace. No seu
Views\Web.config
arquivo, você deve adicionar o seguinte:Use a ferramenta de atualização do MVC 3 para garantir automaticamente que você tenha os valores de configuração corretos.
Observe que pode ser necessário fechar e reabrir o arquivo para que as alterações sejam selecionadas pelo editor.
fonte
Como a resposta aceita sugere, você pode adicionar "using" a todas as visualizações adicionando à seção do arquivo de configuração.
Mas, para uma visão única, você pode simplesmente usar
fonte
Eu tive esse mesmo erro em um aplicativo MVC 4 usando o Razor. Na tentativa de limpar os arquivos web.config, removi os dois
webpages:
valores de configuração:Depois de restaurar esses valores de configuração, as páginas seriam compiladas corretamente e os erros relacionados ao
.Partial()
método de extensão desapareciam.fonte
Eu tive esse problema no VS 2015. O seguinte foi resolvido para mim:
Encontre "páginas da web: versão" nas configurações de aplicativos e atualize-o para a versão 3.0.0.0. Meu web.config tinha
e eu atualizei para
fonte
Eu descobri que colocar esta seção no meu web.config para cada pasta de exibição o resolveu.
fonte
0.0.0.0-2.0.0.0
para1.0.0.0
), e o/View/web.config
arquivo não substitui isso. (Além disso, eu não acredito que você precisar dele em cada/View/Subfolder/
)Este erro informa que você não possui o mecanismo de barbear adequadamente associado ao seu projeto.
Solução: Na janela Gerenciador de Soluções, clique com o botão direito do mouse em seu projeto da web e selecione "Gerenciar Pacotes de Nuget ..." e instale "Microsoft ASP.NET Razor". Isso garantirá que o pacote corretamente esteja instalado e adicionará as entradas necessárias ao seu arquivo web.config.
fonte
No meu caso, use o VS 2013 e ele não é compatível com o MVC 3 nativamente (mesmo que você altere ./Views/web.config): https://stackoverflow.com/a/28155567/1536197
fonte
Como o ASP.NET MVC 3 RTM está disponível, não há necessidade da seção de configuração do Razor. E essas seções podem ser removidas com segurança.
fonte