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
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
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.