Wygląda na to, że istnieje niezgodność między plikami widoku, które niektóre wersje programu Visual Studio generują automatycznie, gdy używasz go do tworzenia nowego modelu. Napotkałem ten problem, używając nowej VS 2013 Community Edition i przechodząc przez samouczek W3Schools pod adresem http://www.w3schools.com/aspnet/mvc_app.asp, ale powyższe komentarze wskazują, że nie jest to problem ze wskazówkami samouczka lub pojedyncza wersja VS.
To prawda, że możesz usunąć komunikat o błędzie , po prostu usuwając plik
@Scripts.Render("~/bundles/jqueryval")
wiersz z układów tworzenia / edycji, które zostały wygenerowane automatycznie przez program Visual Studio.
Ale to rozwiązanie nie rozwiązuje głównej przyczyny ani nie pozostawia w dobrym miejscu do zrobienia czegoś więcej niż ukończenia samouczka. W pewnym momencie (prawdopodobnie dość wcześnie) podczas tworzenia prawdziwej aplikacji będziesz chciał mieć dostęp do kodu walidacji jquery, który rozwiązanie do komentowania usuwa z Twojej aplikacji.
Jeśli używasz VS do tworzenia nowego modelu, tworzy on również zestaw pięciu plików widoku: Utwórz, Usuń, Szczegóły, Edytuj i Indeks. Dwa z tych widoków, Utwórz i Edytuj, mają na celu umożliwienie użytkownikowi dodawania / edytowania danych dla pól w rekordach bazy danych, które stanowią podstawę modelu. W przypadku tych widoków w prawdziwej aplikacji prawdopodobnie będziesz chciał przeprowadzić sprawdzanie poprawności danych za pomocą biblioteki sprawdzania poprawności jquery przed zapisaniem rekordu w bazie danych. Dlatego VS dodaje następujące wiersze
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
na dole tych dwóch poglądów, a nie innych. Automatycznie wygenerowany kod próbuje udostępnić bibliotekę walidacji dla tych widoków, ale nie dla innych.
Błąd występuje, ponieważ VS albo nie dodaje odpowiedniego wiersza do udostępnionego pliku _Layout.cshtml, albo, zobacz odpowiedź powyżej, dodaje go, ale pozostawia zakomentowany. Ta linia jest
@RenderSection("scripts", required: false)
Jeśli niektóre z twoich widoków mają sekcję skryptów (tak jak w przypadku tworzenia i edycji), w układzie musi być osadzone polecenie RenderSection. Jeśli niektóre skrypty mają tę sekcję, a inne nie (jak nie ma opcji Delete, Details i Index), polecenie RenderSection musi mieć required: false
parametr.
Dlatego najlepszym rozwiązaniem, jeśli chcesz zrobić coś więcej niż tylko przejście przez samouczek, jest dodanie instrukcji do _Layout.cshtml, a nie usuwanie kodu z widoków Edytuj i Utwórz.
PS Jest to trochę mylące, że to, co jest wymagane, znajduje się w „pakiecie”, a instrukcja wymagania wygląda tak, jakby próbowała dołączyć plik do folderu bundles, który nie istnieje w twoim projekcie. Jednak w przypadku kompilacji i samouczków do debugowania nie ma to znaczenia, ponieważ dołączone pliki są dołączane pojedynczo. Zobacz: http://www.asp.net/mvc/overview/performance/bundling-and-minification O kodzie, którego dotyczy niniejsza sprawa, wspomniano pokrótce w około dwóch trzecich w dół strony.