asp.net - net - Las siguientes secciones se han definido pero no se han renderizado para la página de diseño "~/Views/Shared/_Layout.cshtml": "Scripts"
mvc asp.net c# (13)
Soy nuevo en ASP MVC y utilizo la introducción al tutorial ASP MVC 4 Beta http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/intro-to-aspnet-mvc-4
Me encuentro con un error que parece que no puedo encontrar una respuesta ni tengo mucha experiencia en programación, así que no sé por qué empezar a arreglar este avance con el tutorial. Agradezco cualquier ayuda que pueda brindar.
Estoy en la sección Acceso a los datos de su modelo desde un controlador y recibo este error cuando intento crear una película como parte del tutorial, hago clic en el enlace "Crear nuevo" y aparece el siguiente error
Las siguientes secciones se han definido pero no se han procesado para la página de diseño> "~ / Views / Shared / _Layout.cshtml": "Scripts"
En lugar de utilizar Visual Studio Express, opté por descargar Visual Studio 2012 RC (no estoy seguro de si esa sería la causa de mi problema).
Me doy cuenta de que puede requerir que incluya un código para responder esto, pero no estoy seguro de qué código incluir siquiera. Por favor, indique qué código necesita que incluya si lo hay y estaré encantado de agregarlo a mi pregunta.
Gracias,
Además, puede agregar la siguiente línea a _Layout.cshtml
o _Layout.Mobile.cshtml
:
@RenderSection("scripts", required: false)
Asegúrate de haber escrito la ortografía correcta de la utilización de la sección de guiones a la vista
el correcto es
@section scripts{ //your script here}
si escribió @section script{ //your script here}
esto está mal.
Busqué el error en la web y llegué a esta página. Estoy usando Visual Studio 2015 y este es mi primer proyecto MVC.
Si pierde el símbolo @ antes de la sección de renderizado obtendrá el mismo error. Me gustaría compartir esto para futuros principiantes.
@RenderSection("headscripts", required: false)
Creo que nuestra solución fue lo suficientemente diferente de todos los demás, así que lo documentaré aquí.
Tenemos la configuración del diseño principal, un diseño intermedio y luego el render de la página de acción final. Main.cshtml <- Config.cshtml <- Action.cshtml
Solo cuando web.config tenía customErrors=''On/RemoteOnly''
recibimos un error personalizado y no se llamaron a ninguna excepción ni Application_Error
. Podría ver esto en Layout = null
line en Error.cshtml. La excepción fue como en la pregunta, falta la sección de scripts.
Lo teníamos definido en Main.cshtml (con required: false) y Action.cshtml no tenía nada que escribir en la sección de scripts.
La solución fue agregar @section scripts { @RenderSection("scripts", false) }
a Config.cshtml.
Mientras trabajaba con el Tutorial de ASP.NET MVC 4 con Visual Studio 2012, encontré el mismo error en "Cómo acceder a los datos de su modelo desde la sección Controlador". La solución es bastante simple.
Al crear una nueva aplicación web ASP.NET MVC 4 en Visual Studio 2012 dentro del documento _Layout.cshtml en la carpeta compartida, la sección "scripts" está comentada.
@*@RenderSection("scripts", required: false)*@
Simplemente desactive la línea y el código de muestra debería funcionar.
@RenderSection("scripts", required: false)
No estoy seguro de por qué se aceptó la respuesta aceptada si la solución sugerida no resolvió el problema y no lo resuelve. En realidad, puede haber dos cuestiones relacionadas relacionadas con este tema.
Problema n. ° 1
La página maestra (por ejemplo, _Layout.cshtml
) tiene una sección definida y es necesaria, pero las vistas _Layout.cshtml
no la implementaron. Por ejemplo,
La plantilla de diseño
<body>
@* Visible only to admin users *@
<div id="option_box">
@* this section is required due to the absence of the second parameter *@
@RenderSection("OptionBox")
</div>
</body>
La vista heredera
No es necesario mostrar ningún código, solo tenga en cuenta que no hay implementación de @section OptionBox {}
en la vista.
El error para el Issue # 1
Section not defined: "OptionBox ".
Problema n. ° 2
La página maestra (por ejemplo, _Layout.cshtml
) tiene una sección definida y es necesaria Y la vista heredada sí la implementó. Sin embargo, la vista de implementación tiene secciones de script
adicionales que no están definidas en (ninguna de) sus páginas maestras.
La plantilla de diseño
same as above
La vista heredera
<div>
<p>Looks like the Lakers can still make it to the playoffs</p>
</div>
@section OptionBox {
<a href"">Go and reserve playoff tickets now</a>
}
@section StatsBox {
<ul>
<li>1. San Antonio</li>
<li>8. L. A. Lakers</li>
</ul>
}
El error para el Issue # 2
The following sections have been defined but have not been rendered for the layout page "~/Views/Shared/_Layout.cshtml": "StatsBox"
El problema del OP es similar al Issue # 2 y la respuesta aceptada es para el Issue # 1.
Ocurre básicamente cuando _Layout.cshtml no tiene:
@RenderSection("scripts", required: false)
o con
@RenderSection("scripts")
SIN
required: false
Entonces, solo agregue @RenderSection ("scripts", required: false) en _Layout.cshtml y funciona especialmente para aquellos desarrolladores que trabajan con proyectos genarated de Kendoui.
Parece que hay una falta de coincidencia entre los archivos Ver que algunas versiones de Visual Studio autogeneran cuando lo usa para crear un nuevo Modelo. Me encontré con este problema utilizando la nueva Edición de Comunidad de VS 2013 y recorriendo el tutorial de W3Schools en http://www.w3schools.com/aspnet/mvc_app.asp pero los comentarios anteriores indican que no hay ningún problema con las instrucciones del tutorial o con un versión única de VS.
Es cierto que puede hacer desaparecer el mensaje de error simplemente quitando el
@Scripts.Render("~/bundles/jqueryval")
línea desde la creación / edición de diseños que Auto Studio generó.
Pero esa solución no aborda la causa raíz ni te deja en un buen lugar para hacer más que terminar de recorrer el tutorial. En algún momento (probablemente bastante temprano) en el desarrollo de una aplicación real, va a querer tener acceso al código de validación jquery que la solución de comentarios elimina de su aplicación.
Si usa VS para crear un nuevo modelo para usted, también crea un conjunto de cinco archivos Ver: Crear, Eliminar, Detalles, Editar e Indice. Dos de estas vistas, Crear y Editar, están destinadas a permitir que el usuario agregue / edite datos para los campos en los registros de la base de datos que se encuentran debajo del modelo. Para esas vistas en una aplicación real, es probable que desee hacer una cierta cantidad de validación de datos utilizando la biblioteca de validación de jquery antes de guardar el registro en la base de datos. Es por eso que VS agrega las siguientes líneas
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
al pie de esos dos puntos de vista y no otros. El código autogenerado está tratando de hacer que la biblioteca de validación esté disponible para esas vistas, pero no para las otras.
El error ocurre porque VS no agrega una línea correspondiente al archivo compartido _Layout.cshtml o, ver una respuesta anterior, lo agrega pero lo deja como comentario. Esta linea es
@RenderSection("scripts", required: false)
Si algunas de sus vistas tienen una sección de guiones (como Crear y Editar), debe haber un comando RenderSection incrustado en el diseño. Si algunos scripts tienen la sección y otros no (como Delete, Details e Index no), el comando RenderSection debe tener el parámetro required: false
.
Así que la mejor solución, si desea hacer algo más que simplemente terminar de recorrer el tutorial, es agregar la instrucción a _Layout.cshtml, no eliminar el código de Editar y Crear vistas.
PD Aquí confunde un poco que lo que se necesita se encuentra en un ''paquete'' y la declaración require parece que intenta incluir un archivo en una carpeta de paquetes que no existe en su proyecto. Pero, para compilaciones y compilaciones de depuración, eso no es relevante ya que los archivos incluidos se incluyen de a uno por vez. Ver: http://www.asp.net/mvc/overview/performance/bundling-and-minification El código que está en cuestión aquí se menciona brevemente en dos tercios del camino hacia abajo de la página.
Significa que ha definido una sección en su Layout.cshtml maestro, pero no ha incluido nada para esa sección en su Vista.
Si su _Layout.cshtml tiene algo como esto:
@RenderSection("scripts")
Entonces, todas las Vistas que usen ese Diseño deben incluir una @section
con el mismo nombre (incluso si el contenido de la sección está vacío):
@{
ViewBag.Title = "Title";
Layout = "~/Views/Shared/_Layout.cshtml";
}
@section scripts{
// Add something here
}
Como alternativa, puede configurar requerido para falso, luego no se le pedirá que agregue la sección en cada Vista,
@RenderSection("scripts", required: false)
o también puede envolver el @RenderSection
en un bloque if
,
@if (IsSectionDefined("scripts"))
{
RenderSection("scripts");
}
Tengo el mismo problema al implementar un tutorial para principiantes de MVC. Recibí varias sugerencias para modificar @RenderSection en su archivo layout.cshtml pero no lo he usado.
He buscado mucho y luego he encontrado que la etiqueta de script generada en un (View / Edit.cshtml) y otro archivo cshtml no se está procesando
**@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
} **
Así que eliminé esas líneas y la aplicación comenzó a funcionar sin problemas.
Tengo la sensación de que está procesando su sección desde una @sección en el archivo _Layout que se refiere a una vista parcial con una @sección, es decir, que ha anidado una @sección dentro de una @sección. En el archivo _Layout, elimine @section alrededor de la sección de renderizado.
Tuve un caso con 3 niveles a''la _ MainLayout.cshtml <--- _ Middle.cshtml <--- Page.cshtml . Aunque haciendo esto:
_MainLayout.cshtml
<head>
@RenderSection("head", false)
</head>
_Middle.cshtml
@section head {
@RenderSection("head")
}
y en Page.cshtml definiendo
@section head {
***content***
}
Todavía obtendría el error
Las siguientes secciones se han definido pero no se han renderizado para la página de diseño "~ / Views / Shared / _Middle.cshtml": "head".
Resultó que el error fue que Middle.cshtml confíe en /Views/_ViewStart.cshtml para resolver su diseño principal. El problema se resolvió definiendo esto en Middle.cshtml explícitamente:
@{
Layout = "~/Views/_Shared/_MainLayout.cshtml";
}
No puedo decidir si esto sería por diseño o error en MVC 4 - de todos modos, el problema se resolvió :)
verificar el speling y mayúsculas / minúsculas del término ""
cada vez que escribamos @RenderSection ("nombre", requerido: falso) asegúrese de que la vista de la navaja contiene una sección @section name {} así que verifique el speling y mayúsculas / minúsculas del término "" Correcto en este caso es "Scripts"