none
"Add as link" Views ".cshtml" RRS feed

  • Pergunta

  • Bom dia.

    Estou com um problema ao compartilhar Views entre projetos.

    Eu tenho um projeto que possui alguns cadastros que gostaria de utiliza-los em outro projeto, mas não quero fazer cópia desses arquivos. Sendo assim eu fui no projeto que quero utilizar esses cadastros e adicionei os arquivos específicos dessa forma.

    Fui na pasta Controllers -> Add -> Exiting Item... -> Selecionei o Arquivo -> Mudei para Add as Link.

    Fazendo esse processo para o controller funcionou. 

    O problema é que eu realizar o mesmo para as Views mas quando eu chamo esse controller

    The view 'Teste' or its master was not found or no view engine supports the searched locations. The following locations were searched:
    ~/Views/Teste/Teste.aspx
    ~/Views/Teste/Teste.ascx
    ~/Views/Shared/Teste.aspx
    ~/Views/Shared/Teste.ascx
    ~/Views/Teste/Teste.cshtml
    ~/Views/Teste/Teste.vbhtml
    ~/Views/Shared/Teste.cshtml
    ~/Views/Shared/Teste.vbhtml

    Alguém saberia me dizer o por que isso acontece?

    Pude perceber que nesse processo que eu "chamei" esses arquivos quando compila, ele faz uma 

    copia da view para pasta "obj", sendo assim deveria funcionar.

    Desde já agradeço.


    terça-feira, 23 de junho de 2015 12:51

Respostas

  • Não sei se é a melhor resposta para isso mas eu achei um link que me ajudou a corrigir o problema.

    Como eu havia criado um link da view ela não estava realmente em meu projeto. 

    Sendo assim eu resolvi o problema com a ajuda desse link aqui.

    http://stackoverflow.com/questions/18963750/add-file-as-a-link-on-visual-studio-debug-vs-publish


    terça-feira, 23 de junho de 2015 21:16

Todas as Respostas

  • Tudo bom Douglas Bandeira?

    O que essa mensagem de erro quer dizer é que o seu projeta não está conseguindo encontrar a view que você requisitou no caminho desejado. Os projetos feitos em MVC tem uma mecânica de roteamento dos requests e responses que prioriza convenção sobre configuração. O que isso significa basicamente é que o programa sempre vai procurar com um método em uma classe Controller e depois direcionar o usuário para a view com o nome requisitado, dentro da pasta com o mesmo nome do controller.

    Um request http://localhost/Cadastro/Index por exemplo será roteado para o método Index no controller CadastroController.cs, e depois será direcionado para a view Index.cshtml que está dentro de uma pasta Cadastro, dentro da pasta Views na sua Solution. Isto não requer nenhuma configuração, mas você pode criar rotas que não seguem deste padrão.

    O arquivo onde estas informações podem ser configuradas é o Global.asax no MVC4 e versões anteriores. No MVC5 as rotas são definidas em um arquivo chamado RouteConfig.cs dentro da pasta App_Start. O que pode estar acontecendo é que como você copiou as views de outro projeto, elas podem ter alguma dependência de uma partial view que não existe no seu projeto, ou então você pode estar com views duplicadas. Ainda, por algum motivo, a engine pode simplesmente não estar encontrando as rotas para estas views por terem sido importadas como foram. 

    Eu tentaria copiar as views para o projeto e testar novamente. Se não funcionar, tente inserir as rotas na mão dentro do arquivo RouteConfig.cs. Esse artigo aqui tem algum conteúdo que pode te auxiliar a fazer isso manualmente:

    Creating Custom Routes (C#)

    espero que isso possa ter ajudado.

    terça-feira, 23 de junho de 2015 19:04
  • Assim Samuel.

    Quando eu crio um link para o controller sem copiar ele para o projeto ele consegue acessar o controller por esse

    outro projeto.

    Mas quando eu vou direcionar para a view que estaria no meu projeto como um link igual eu fiz pro controller ele não encontra a view.

    Se eu copio essa view para o projeto o controller encontra.

    Por esse motivo eu acho estranho, pois quando eu publico o projeto essa view é copiada para a versão publicada.

    Meio que não teria um motivo para não funcionar, eu até fiz esses esquemas de rota anteriormente.

    E o pior que Publicado Funciona. Só não está funcionando em tempo de Projeto. :(


    terça-feira, 23 de junho de 2015 19:43
  • Não sei se é a melhor resposta para isso mas eu achei um link que me ajudou a corrigir o problema.

    Como eu havia criado um link da view ela não estava realmente em meu projeto. 

    Sendo assim eu resolvi o problema com a ajuda desse link aqui.

    http://stackoverflow.com/questions/18963750/add-file-as-a-link-on-visual-studio-debug-vs-publish


    terça-feira, 23 de junho de 2015 21:16