Sou novo no ASP MVC e utilizo o tutorial de introdução ao ASP MVC 4 Beta http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/intro-to-aspnet -mvc-4
Estou encontrando um erro para o qual não consigo encontrar uma resposta, nem tenho muita experiência em programação, então não sei por onde começar para corrigir isso e seguir em frente com o tutorial. Agradeço qualquer ajuda que você possa fornecer.
Estou na seção Acessando os dados do seu modelo a partir de um controlador e recebo este erro quando tento criar um filme como parte do tutorial, clico no link "Criar novo" e recebo o seguinte erro
As seguintes seções foram definidas, mas não foram renderizadas para a página de layout> "~ / Views / Shared / _Layout.cshtml": "Scripts"
Em vez de usar o Visual Studio Express, optei por baixar o Visual Studio 2012 RC (não tenho certeza se essa seria a causa raiz do meu problema.
Sei que você pode exigir que eu inclua um código para responder a isso, mas não tenho certeza de qual código incluir. Informe qual código você precisa que eu inclua, se houver, e ficarei feliz em adicioná-lo à minha pergunta.
Obrigado,
fonte
@section
que NÃO é renderizado no Layout (comRenderSection
). Isso pode ocorrer se você fez referência ao erradoLayout
ou se esqueceu de fazer referência a um layout. Ver a resposta deRespostas:
Significa que você definiu uma seção em seu Layout.cshtml mestre, mas não incluiu nada para essa seção em sua Visualização.
Se o seu _Layout.cshtml tiver algo assim:
Então, todas as visualizações que usam esse layout devem incluir um
@section
com o mesmo nome (mesmo se o conteúdo da seção estiver vazio):Como alternativa, você pode definir required como false, então não será necessário adicionar a seção em cada View,
ou você também pode embrulhar o
@RenderSection
em umif
bloco,fonte
, required: false)
fazendo isso@RenderSection("scripts", required: false)
permitirá que seja incluído ou não.@RenderSection("scripts", required: false)
no _Layout.cshtml gerado é a solução certa. (Veja a discussão abaixo para saber o porquê.) Dessa forma, você pode adicionar a correção em um arquivo, não em todos - uma correção muito mais DRYer.Além disso, você pode adicionar a seguinte linha ao
_Layout.cshtml
ou_Layout.Mobile.cshtml
:fonte
Tive um caso com 3 níveis a'la _ MainLayout.cshtml <--- _ Middle.cshtml <--- Page.cshtml . Mesmo fazendo assim:
_MainLayout.cshtml
_Middle.cshtml
e em Page.cshtml definindo
Eu ainda obteria o erro
Acontece que o erro foi o Middle.cshtml confiar em /Views/_ViewStart.cshtml para resolver seu layout pai. O problema foi resolvido definindo isso explicitamente em Middle.cshtml :
Não consigo decidir se isso seria por design ou um bug no MVC 4 - de qualquer forma, o problema foi resolvido :)
fonte
@section Foo {@RenderSection("Foo")}
para "passar" as seções! Também teve que passar o corpo com@RenderBody()
.Não sei por que a resposta aceita foi aceita se a solução sugerida não resolveu e não resolve o problema. Na verdade, pode haver dois problemas relacionados relacionados a este tópico.
Problema 1
A página mestra (por exemplo
_Layout.cshtml
) tem uma seção definida e é necessária, mas as visualizações herdadas não a implementaram. Por exemplo,O modelo de layout
A Visão de Herança
Não há necessidade de mostrar nenhum código, basta considerar que não há implementação de
@section OptionBox {}
na visualização.O erro para o problema nº 1
Section not defined: "OptionBox ".
Edição # 2
A página principal (por exemplo
_Layout.cshtml
) tem uma secção definida e que é necessário e o ponto de vista herdar se aplicá-lo. No entanto, a visão de implementação temscript
seções adicionais que não são definidas em (nenhuma) sua (s) página (s) master.O modelo de layout
same as above
A Visão de Herança
O erro para o problema nº 2
The following sections have been defined but have not been rendered for the layout page "~/Views/Shared/_Layout.cshtml": "StatsBox"
O problema do OP é semelhante ao problema nº 2 e a resposta aceita é para o problema nº 1.
fonte
Acho que nossa solução foi suficientemente diferente de todas as outras, então vou documentá-la aqui.
Configuramos o layout principal, um layout intermediário e, em seguida, a renderização da página de ação final. Main.cshtml <- Config.cshtml <- Action.cshtml
Somente quando o web.config teve
customErrors='On/RemoteOnly'
um erro personalizado e nenhuma exceção nemApplication_Error
foi chamado. Eu poderia pegar issoLayout = null
online no Error.cshtml. A exceção era como na pergunta, seção de scripts ausente.Nós o tínhamos definido em Main.cshtml (com required: false) e Action.cshtml não tinha nada que fosse escrito na seção de scripts.
A solução foi adicionar
@section scripts { @RenderSection("scripts", false) }
ao Config.cshtml.fonte
Isso ocorre basicamente quando _Layout.cshtml está sem:
ou com
SEM
Então, basta adicionar @RenderSection ("scripts", required: false) em _Layout.cshtml e funciona especialmente para aqueles desenvolvedores que trabalham com projetos gerados Kendoui.
fonte
Parece que há uma incompatibilidade entre os arquivos de exibição que algumas versões do Visual Studio geram automaticamente para você quando você o usa para criar um novo modelo. Eu encontrei esse problema usando o novo VS 2013 Community Edition e percorrendo o tutorial W3Schools em http://www.w3schools.com/aspnet/mvc_app.asp, mas os comentários acima indicam que não é um problema com as instruções do tutorial ou com um versão única do VS.
É verdade que você pode fazer a mensagem de erro desaparecer apenas removendo o
@Scripts.Render("~/bundles/jqueryval")
linha dos layouts de criação / edição que foram gerados automaticamente pelo Visual Studio.
Mas essa solução não aborda a causa raiz nem o deixa em um bom lugar para fazer mais do que terminar de percorrer o tutorial. Em algum ponto (provavelmente bem no início) do desenvolvimento de um aplicativo real, você vai querer acessar o código de validação jquery que a solução de comentário remove de seu aplicativo.
Se você usar o VS para criar um novo modelo para você, ele também criará um conjunto de cinco arquivos de visualização: Criar, Excluir, Detalhes, Editar e Índice. Duas dessas visualizações, Criar e Editar, destinam-se a permitir ao usuário adicionar / editar dados para os campos nos registros do banco de dados que fundamentam o modelo. Para essas visualizações em um aplicativo real, você provavelmente desejará fazer alguma validação de dados usando a biblioteca de validação jquery antes de salvar o registro no banco de dados. É por isso que o VS adiciona as seguintes linhas
ao fundo dessas duas visualizações e não de outras. O código gerado automaticamente está tentando disponibilizar a biblioteca de validação para essas visualizações, mas não para as outras.
O erro ocorre porque o VS não adiciona uma linha correspondente ao arquivo _Layout.cshtml compartilhado ou, veja uma resposta acima, adiciona-o, mas deixa como comentário. Esta linha é
@RenderSection("scripts", required: false)
Se algumas de suas visualizações têm uma seção de scripts (como Create e Edit têm), deve haver um comando RenderSection embutido no layout. Se alguns scripts têm a seção e outros não (como Delete, Details e Index não), o comando RenderSection precisa ter o
required: false
parâmetro.Portanto, a melhor solução, se você quiser fazer algo mais do que simplesmente terminar de percorrer o tutorial, é adicionar a instrução a _Layout.cshtml e não remover o código das visualizações Editar e Criar.
PS É um pouco confuso, aqui, que o que está sendo exigido está em um 'pacote' e a instrução require parece que está tentando incluir um arquivo em uma pasta de pacotes que não existe em seu projeto. Mas, para compilações de depuração e tutoriais, isso não é relevante, pois os arquivos agrupados são incluídos um de cada vez. Consulte: http://www.asp.net/mvc/overview/performance/bundling-and-minification O código que está em questão aqui é mencionado brevemente cerca de dois terços do caminho para baixo na página.
fonte
Enquanto trabalhava no Tutorial da ASP.NET MVC 4 com Visual Studio 2012, encontrei o mesmo erro na seção "Acessando os dados do seu modelo a partir de um controlador". A correção é bastante simples.
Ao criar um novo aplicativo da Web ASP.NET MVC 4 no Visual Studio 2012 dentro do documento _Layout.cshtml na pasta compartilhada, a seção "scripts" é comentada.
Simplesmente descomente a linha e o código de amostra deve funcionar.
fonte
Eu tenho o mesmo problema ao implementar um tutorial para iniciantes de MVC. Recebi várias sugestões para modificar @RenderSection em seu arquivo layout.cshtml, mas não usei.
Pesquisei muito e descobri que a tag de script gerada em um (View / Edit.cshtml) e outro arquivo cshtml não está renderizando
} **
Então, removi essas linhas e o aplicativo começou a funcionar sem problemas.
fonte
Eu também comentei ** @ section Scripts que está funcionando perfeitamente. :)
fonte
Procurei o erro na web e cheguei a esta página. Estou usando o Visual Studio 2015 e este é meu primeiro projeto MVC.
Se você perder o símbolo @ antes da seção de renderização, obterá o mesmo erro. Eu gostaria de compartilhar isso para futuros iniciantes.
fonte
Tenho a sensação de que você está renderizando sua seção de dentro de uma @section no arquivo _Layout que se refere a uma visualização parcial com uma @section, ou seja, você aninhou uma @section dentro de uma @section. No arquivo _Layout, remova a seção @ ao redor da seção de renderização.
fonte
Resolvi esse problema usando o seguinte,
fonte
Para mim, o problema estava no meu _Layout.cshtml, tenho RenderSection dentro de uma condição
e na minha visão de criança era sem condição
portanto, independentemente do tema, a criança adicionava o rodapé. Mas no pai, quando o tema não é vermelho ou verde, ele não está adicionando o rodapé e uma exceção sem tratamento é lançada.
fonte
verifique a grafia e maiúsculas / minúsculas do termo ""
sempre que escrevermos @RenderSection ("nome", obrigatório: falso), certifique-se de que a visualização do razor Contém uma seção @ nome da seção {}, portanto, verifique a ortografia e maiúsculas / minúsculas do termo "" correto neste caso é "Scripts"
fonte
Certifique-se de que digitou a grafia correta da seção de script em vista
o correto é
se você digitou
@section script{ //your script here}
isso está errado.fonte