Eu adicionei uma página cshtml em um projeto. Quando tentei adicionar a seguinte declaração, recebo um erro: "O nome 'modelo' não existe no contexto atual".
@model xyz.abc.SomeClass
Eu verifiquei as referências, todas elas estão no lugar. Eu adicionei um web.config na pasta view, mas isso não foi corrigido.
Falta alguma coisa?
asp.net-mvc-3
razor
user602737
fonte
fonte
Respostas:
Atualização: se você estiver usando uma versão mais recente do MVC, o mesmo processo se aplica, mas certifique-se de usar o número da versão correta na
<host>
linha do web.config .Bem, eu me deparei com a mesma coisa que você e, depois de algumas pesquisas, descobri qual é o problema!
Você precisa incluir o web.config MVC3 padrão para a pasta Views. O MVC3 possui dois: um na raiz do seu aplicativo e outro na pasta de visualizações. Isso possui uma seção para namespaces incluídos. Certifique-se de que o seu seja algo parecido com isto:
Sugiro que você crie um novo projeto MVC3 e copie o web.config criado para você na sua pasta views.
Importante Depois de fazer isso, você precisa fechar o arquivo e reabri-lo. Voila! Intellisense!
fonte
MAIN
arquivo web.config<add key="webpages:Version" value="3.0.0.0" />
Encontrei esse mesmo problema quando criei uma nova área para organizar minhas páginas. Minha estrutura parecia:
WebProject
As visualizações criadas na pasta Views no WebProject funcionaram bem, mas as views criadas na NewArea geraram o seguinte erro:
Para corrigir isso, copiei o web.config na pasta Views no WebProject para a pasta Views no NewArea. Ver abaixo.
WebProject
Eu me deparei com isso porque criei manualmente essa nova área usando Adicionar -> Nova Pasta para adicionar as pastas. Eu deveria ter clicado com o botão direito do mouse no projeto e selecionado Adicionar -> Área. Em seguida, o Visual Studio cuidaria de configurar a área corretamente.
fonte
Views/Web.config
referenciava aSystem.Web.Mvc.MvcWebRazorHostFactory
versão 5.0.0.0 e eu tinha uma Área de terceiros referenciando a v4.0 e com as visualizações cooperando. I definirViews/Web.config
volta para v4.0 e tudo funcionou.Se suas visualizações estão em um assembly de biblioteca de classes, o que é útil para reutilizar visualizações compartilhadas entre projetos, basta fazer o que Adam sugere pode não ser suficiente. Eu ainda tinha problemas, mesmo com isso.
Tente isso em seu web.config na raiz do seu projeto:
E isso no web.config na sua pasta views:
Isso funcionou para mim. Agora eu tenho intellisense e nenhum erro de compilação em meus modos de exibição em um projeto que não seja MVC que eu possa referenciar em vários sites MVC.
fonte
Corri para esse problema quando inadvertidamente tinha uma cópia do arquivo de exibição (About.cshtml) para a rota / about no diretório raiz. (Não é a pasta views). Depois que o arquivo foi removido da raiz, o problema foi resolvido.
fonte
Teve problemas semelhantes ao usar o VS2012 e o VS2013.
A adição da seguinte linha ao <appSettings> no web.config principal funcionou:
Se a linha já estava lá, mas disse 2.0.0.0, alterá-la para 3.0.0.0 funcionou.
fonte
Atualização: 5/5/2015 Para o seu projeto MVC 5, você precisa definir a Versão como 5.0.0.0 em seu /views/web.config
fonte
Enquanto você declara o modelo na parte superior da visualização usando código como este:
você precisa capitalizar suas referências a ele abaixo, por exemplo:
Acredito que um web.config ausente na pasta Views seria a principal causa disso, mas se isso for corrigido e o problema persistir, verifique se você está usando Model , não model, para se referir a ele na fonte.
fonte
Também encontrei esse problema. Minhas circunstâncias eram um pouco diferentes.
Uma das minhas pastas de exibição foi acidentalmente movida para o diretório raiz do meu projeto. Isso levou à rota
project_root/SignUp/ViewName
correspondente antesproject_root/Views/SignUp/ViewName
. Isso causou o@model
erro.Depois de mover as visualizações de volta para o local apropriado, o diretório foi recriado de alguma forma na raiz do projeto. Desta vez, vazio.
/SignUp/ViewName
funcionou, mas/SignUp/
lançou um403 - Forbidden: Access is denied.
erro. A pasta inteira deve ser removida da raiz do projeto.Espero que isso ajude alguém. Passei horas acreditando que o problema foi causado por nossa atualização recente do MVC 3 para o MVC 4. Apenas uma observação: os problemas de atualização devem ocorrer apenas entre o MVC 2 e o MVC 3. Se você vir esse problema em versões posteriores, provavelmente não é devido ao melhoria.
fonte
Levei séculos para resolver esse problema, mas finalmente espero ter resolvido o problema no MVC, que é semelhante:
Eu reinstalei o ASP.NET 4.5 ( http://www.asp.net/downloads )
Eu segui o tutorial de atualização em http://www.asp.net/whitepapers/mvc4-release-notes
MAS este parágrafo mencionado está errado para mim
Como eu tenho o Razor no System.Web.Razor , alterei o namespace do razor para System.Web.Razor.
Adicione isso ao seu web.config
Eu adicionei a referência de montagem a todas essas montagens acima
Localize o elemento ProjectTypeGuids e substitua {E53F8FEA-EAE0-44A6-8774-FFD645390401} por {E3E379DF-F4C6-4180-9B81-6769533ABE47}.
Isso é tudo.
fonte
<add key="webpages:Version" value="2.0.0.0" />
é o fator determinante, a outra configuração não é necessária.3.0.0.0
mas sim, isso é muito importante!É um erro horrível, mas:
Certifique-se de ter arquivos Web.config em seu modo de exibição no controle remoto . Talvez você tenha pulado para enviá-lo pelos filtros do seu programa FTP.
fonte
Estava faltando o web.config em Areas / MyArea / Views / web.config. Uma vez adicionado, funcionou bem. Isso foi com o MVC 5 e o .NET4.5
fonte
Há também outra razão. No meu caso, copiei um arquivo index.cshtml para a pasta raiz da web (fora da pasta Views) como um backup do servidor remoto.
Então, continuei alterando meu /views/web.config, alterando meu /views/home/index.cshtml e o erro continuou acontecendo ... até descobrir o /index.cshtml fora da pasta views, excluí-lo e, com certeza, ele tudo voltou ao normal!
fonte
Encontrei o mesmo problema, mas no meu caso, a única coisa que mudou foi que eu desinstalei o Visual Studio 2012 e instalei o Visual Studio 2013. Abri nossa solução, mas continuava recebendo o mesmo
The name 'model' does not exist in current context
erro em todas as visualizações do Razor.Meu colega de trabalho sugeriu a verificação de atualizações para o VS2013. Depois de instalar a atualização 1 do VS2013 , parei de receber esse erro.
fonte
Verifique seu arquivo de configuração no diretório views. no add a chave para MVC 4/5
fonte
Reinstalar o nuget resolveu para mim
PM> Pacote de Instalação Microsoft.AspNet.Razor -Version 3.2.3
fonte
Para mim, esse era o problema. Todo esse bloco estava faltando na seção.
fonte
Eu tenho o mesmo problema depois de atualizar os pacotes. Fiz tudo o que você escreveu acima neste tópico, mas o vermelho subjacente à palavra-chave model não desapareceu. Mais tarde, encontrou a solução: apenas excluiu a pasta 'package' do diretório do meu projeto e reconstruí-la, enquanto isso o NuGet restaurava os pacotes ausentes. Atualizado, e pronto!
fonte
Verifique se o arquivo web.config deve existir nos arquivos publicados
fonte
Eu estava enfrentando o mesmo problema e, em seguida, encontro uma solução. A solução é:
O arquivo .suo é um arquivo oculto na mesma pasta em que o arquivo de solução .svn existe. Espero que funcione!
fonte