Soy nuevo en ASP MVC y estoy utilizando el tutorial de Introducción a 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 para el que parece que no puedo encontrar una respuesta ni tengo mucha experiencia en programación, por lo que no sé ni por dónde empezar a solucionarlo y continúa con el tutorial. Agradezco cualquier ayuda que pueda brindar.
Estoy en la sección Accediendo a los datos de su modelo desde un controlador y obtengo este error cuando intento crear una película como parte del tutorial, hago clic en el enlace "Crear nuevo" y aparece el siguiente error
Se han definido las siguientes secciones pero no se han renderizado para la página de diseño> "~ / Views / Shared / _Layout.cshtml": "Scripts"
En lugar de usar Visual Studio Express, opté por descargar Visual Studio 2012 RC (no estoy seguro de si esa sería la causa principal de mi problema.
Me doy cuenta de que puede solicitarme que incluya un código para responder a esto, pero no estoy seguro de qué código incluir. Indique qué código necesita que incluya, si corresponde, y con gusto lo agregaré a mi pregunta.
Gracias,
fuente
@section
que NO se renderiza en el Layout (conRenderSection
). Esto puede ocurrir si ha hecho referenciaLayout
a un diseño incorrecto o si ha olvidado hacer referencia a un diseño. Vea la respuesta de @ vonvRespuestas:
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:
Luego, todas las Vistas que usan ese Diseño deben incluir un
@section
nombre con el mismo nombre (incluso si el contenido de la sección está vacío):Como alternativa, puede establecer required en false, entonces no se le pedirá que agregue la sección en cada vista,
o también puedes envolverlo
@RenderSection
en unif
bloque,fuente
, required: false)
lo que@RenderSection("scripts", required: false)
va a permitir que se incluye o no.@RenderSection("scripts", required: false)
en el _Layout.cshtml generado es la solución correcta. (Vea la discusión a continuación para saber por qué). De esa manera, puede agregar la solución en un archivo, no en todos: una solución mucho más SECA.Además, puede agregar la siguiente línea a
_Layout.cshtml
o_Layout.Mobile.cshtml
:fuente
Tuve un caso con 3 niveles a'la _ MainLayout.cshtml <--- _ Middle.cshtml <--- Page.cshtml . Aunque haciendo así:
_MainLayout.cshtml
_Middle.cshtml
y en Page.cshtml definiendo
Todavía obtendría el error
Resultó que el error era que Middle.cshtml confiaba en /Views/_ViewStart.cshtml para resolver su diseño principal. El problema se resolvió definiendo esto en Middle.cshtml explícitamente:
No puedo decidir si esto sería por diseño o un error en MVC 4; de todos modos, el problema se resolvió :)
fuente
@section Foo {@RenderSection("Foo")}
para "transmitir" las secciones! También tuvo que pasar el cuerpo con@RenderBody()
.No estoy seguro de por qué se aceptó la respuesta aceptada si la solución sugerida no resolvió y no resuelve el problema. En realidad, puede haber dos problemas relacionados con este tema.
Número 1
La página maestra (por ejemplo
_Layout.cshtml
) tiene una sección definida y es necesaria, pero las vistas heredadas no la implementaron. Por ejemplo,La plantilla de diseño
La vista heredera
No es necesario mostrar ningún código, solo considere que no hay implementación de
@section OptionBox {}
en la vista.El error del número 1
Section not defined: "OptionBox ".
Número 2
La página maestra (por ejemplo
_Layout.cshtml
) tiene una sección definida y es necesaria Y la vista heredada la implementó. Sin embargo, la vista de implementación tienescript
secciones adicionales que no están definidas en (ninguna de) sus páginas maestras.La plantilla de diseño
same as above
La vista heredera
El error del número 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 problema n. ° 2 y la respuesta aceptada es para el problema n. ° 1.
fuente
Creo que nuestra solución fue lo suficientemente diferente a la de todos los demás, así que la 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 tuvo
customErrors='On/RemoteOnly'
un error personalizado y noApplication_Error
se llamó ni una excepción . Podría captar esto enLayout = null
línea en el Error.cshtml. La excepción fue como en la pregunta, falta la sección de guiones.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.fuente
Ocurre básicamente cuando _Layout.cshtml no tiene:
o con
SIN
Entonces, simplemente agregue @RenderSection ("scripts", required: false) en _Layout.cshtml y funciona especialmente para aquellos desarrolladores que trabajan con proyectos generados por Kendoui.
fuente
Parece que existe una discrepancia entre los archivos de vista que algunas versiones de Visual Studio generan automáticamente cuando lo usa para crear un nuevo modelo. Encontré este problema usando la nueva VS 2013 Community Edition y siguiendo el tutorial de W3Schools en http://www.w3schools.com/aspnet/mvc_app.asp pero los comentarios anteriores indican que no es un problema con las instrucciones del tutorial o con un versión única de VS.
Es cierto que puede hacer que el mensaje de error desaparezca simplemente quitando el
@Scripts.Render("~/bundles/jqueryval")
línea de los diseños de creación / edición que fueron generados automáticamente por Visual Studio.
Pero esa solución no aborda la causa raíz ni lo 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, querrá acceder al código de validación de 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 de visualización: Crear, Eliminar, Detalles, Editar e Índice. Dos de estas vistas, Crear y Editar, están destinadas a permitir al usuario agregar / editar datos para los campos en los registros de la base de datos que subyacen al modelo. Para esas vistas en una aplicación real, probablemente querrá hacer una cierta cantidad de validación de datos utilizando la biblioteca de validación jquery antes de guardar el registro en el archivo db. Es por eso que VS agrega las siguientes líneas
al final de esas dos vistas y no a otras. El código generado automáticamente intenta que la biblioteca de validación esté disponible para esas vistas, pero no para las demás.
El error ocurre porque VS no agrega una línea correspondiente al archivo compartido _Layout.cshtml o, vea una respuesta arriba, lo agrega pero lo deja comentado. Esta linea es
@RenderSection("scripts", required: false)
Si algunas de sus vistas tienen una sección de scripts (como crear y editar), tiene que 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
required: false
parámetro.Entonces, la mejor solución, si desea hacer algo más que terminar el tutorial, es agregar la declaración a _Layout.cshtml, no eliminar el código de las vistas Editar y Crear.
PD: Es un poco confuso, aquí, que lo que se requiere está en un 'paquete' y la declaración require parece que está tratando de incluir un archivo en una carpeta de paquetes que no existe en su proyecto. Pero, para las compilaciones de depuración y los tutoriales, eso no es relevante ya que los archivos empaquetados se incluyen uno a la vez. Ver: http://www.asp.net/mvc/overview/performance/bundling-and-minification El código que está en cuestión aquí se menciona brevemente aproximadamente dos tercios del camino hacia abajo en la página.
fuente
Mientras trabajaba en el Tutorial de ASP.NET MVC 4 con Visual Studio 2012, encontré el mismo error en la sección "Acceso a los datos de su modelo desde un controlador". La solución es bastante sencilla.
Al crear una nueva aplicación web ASP.NET MVC 4 en Visual Studio 2012 dentro del documento _Layout.cshtml en la carpeta compartida, se comenta la sección "scripts".
Simplemente elimine los comentarios de la línea y el código de muestra debería funcionar.
fuente
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 encontré que la etiqueta de secuencia de comandos generada en un (Ver / Editar.cshtml) y otro archivo cshtml no se está procesando
} **
Así que eliminé esas líneas y la aplicación comenzó a funcionar sin problemas.
fuente
También he comentado ** @ sección Scripts que está funcionando sin problemas. :)
fuente
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 render, obtendrá el mismo error. Me gustaría compartir esto para futuros principiantes.
fuente
Tengo la sensación de que está renderizando su sección desde una @section en el archivo _Layout que se refiere a una vista parcial con una @section, es decir, ha anidado una @section dentro de una @section. En el archivo _Layout, elimine la sección @ alrededor de la sección de representación.
fuente
Resolví este problema usando lo siguiente,
fuente
Para mí, el problema estaba en mi _Layout.cshtml Tengo RenderSection dentro de una condición
y en mi opinión de niño fue sin condición
así que independientemente del tema, el niño estaba agregando el pie de página. Pero en el padre, cuando el tema no es rojo o verde, no se agrega el pie de página y se lanza una excepción sin mano.
fuente
comprobar la ortografía y las mayúsculas / minúsculas del término ""
siempre que escribamos @RenderSection ("nombre", obligatorio: falso) asegúrese de que la vista de la navaja contenga una sección @nombre de la sección {}, así que verifique la ortografía y las mayúsculas / minúsculas del término "". En este caso, lo correcto es "Scripts".
fuente
Asegúrese de haber escrito correctamente la ortografía del uso de la sección de script en la vista
lo correcto es
si escribió
@section script{ //your script here}
esto es incorrecto.fuente