Uzyskiwanie dostępu do danych modelu za pomocą kontrolera (VB)
Autor : Rick Anderson
Ten samouczek zawiera podstawowe informacje na temat tworzenia aplikacji internetowej MVC ASP.NET przy użyciu programu Microsoft Visual Web Developer 2010 Express z dodatkiem Service Pack 1, który jest bezpłatną wersją programu Microsoft Visual Studio. Przed rozpoczęciem upewnij się, że zostały zainstalowane wymagania wstępne wymienione poniżej. Wszystkie te elementy można zainstalować, klikając następujący link: Instalator platformy sieci Web. Alternatywnie można osobno zainstalować wymagania wstępne, korzystając z następujących linków:
- Wymagania wstępne programu Visual Studio Web Developer Express SP1
- ASP.NET aktualizacji narzędzi MVC 3
- SQL Server Compact 4.0 (środowisko uruchomieniowe i obsługa narzędzi)
Jeśli używasz programu Visual Studio 2010 zamiast Visual Web Developer 2010, zainstaluj wymagania wstępne, klikając następujący link: Wymagania wstępne programu Visual Studio 2010.
Projekt Visual Web Developer z kodem źródłowym VB.NET jest dostępny do dołączenia do tego tematu. Pobierz wersję VB.NET. Jeśli wolisz język C#, przejdź do wersji języka C# tego samouczka.
W tej sekcji utworzysz nową MoviesController
klasę i napiszesz kod, który pobiera dane filmu i wyświetla je w przeglądarce przy użyciu szablonu widoku. Pamiętaj, aby skompilować aplikację przed kontynuowaniem.
Kliknij prawym przyciskiem myszy folder Controllers i utwórz nowy MoviesController
kontroler. Wybierz następujące opcje:
- Nazwa kontrolera: MoviesController. (Jest to wartość domyślna).
- Szablon: kontroler z akcjami odczytu/zapisu i widokami przy użyciu programu Entity Framework.
- Klasa modelu: Movie (MvcModel.Models).
- Klasa kontekstu danych: MovieDBContext (MvcText.Models).
- Widoki: Razor (CSHTML). (Wartość domyślna).
Kliknij pozycję Dodaj. Program Visual Web Developer tworzy następujące pliki i foldery:
- Plik MoviesController.vb w folderze Controllers projektu.
- Folder Filmy w folderze Widoki projektu.
- Create.vbhtml, Delete.vbhtml, Details.vbhtml, Edit.vbhtml i Index.vbhtml w nowym folderze Views\Movies .
Mechanizm tworzenia szkieletu ASP.NET MVC 3 automatycznie utworzył metody akcji i widoki CRUD (tworzenie, odczytywanie, aktualizowanie i usuwanie). Masz teraz w pełni funkcjonalną aplikację internetową, która umożliwia tworzenie, wyświetlanie listy, edytowanie i usuwanie wpisów filmu.
Uruchom aplikację i przejdź do Movies
kontrolera, dołączając ciąg /Movies do adresu URL na pasku adresu przeglądarki. Ponieważ aplikacja korzysta z domyślnego routingu (zdefiniowanego w pliku Global.asax ), żądanie http://localhost:xxxxx/Movies
przeglądarki jest kierowane do domyślnej Index
Movies
metody akcji kontrolera. Innymi słowy żądanie http://localhost:xxxxx/Movies
przeglądarki jest w rzeczywistości takie samo jak żądanie http://localhost:xxxxx/Movies/Index
przeglądarki . Wynik jest pustą listą filmów, ponieważ jeszcze ich nie dodano.
Tworzenie filmu
Wybierz link Utwórz nowy . Wprowadź szczegóły dotyczące filmu, a następnie kliknij przycisk Utwórz .
Kliknięcie przycisku Utwórz powoduje opublikowanie formularza na serwerze, na którym informacje o filmie są zapisywane w bazie danych. Następnie nastąpi przekierowanie do adresu URL /Movies , w którym na liście będzie widoczny nowo utworzony film.
Utwórz jeszcze kilka wpisów filmu. Wypróbuj linki Edytuj, Szczegóły i Usuń , które są funkcjonalne.
Badanie wygenerowanego kodu
Otwórz plik Controllers\MoviesController.vb i sprawdź wygenerowaną Index
metodę. Poniżej przedstawiono część kontrolera filmu z Index
metodą .
Public Class MoviesController
Inherits System.Web.Mvc.Controller
Private db As MovieDBContext = New MovieDBContext
'
' GET: /Movies/
Function Index() As ViewResult
Return View(db.Movies.ToList())
End Function
Poniższy wiersz z MoviesController
klasy tworzy wystąpienie kontekstu bazy danych filmu, zgodnie z wcześniejszym opisem. Kontekst bazy danych filmów umożliwia wykonywanie zapytań, edytowanie i usuwanie filmów.
Private db As MovieDBContext = New MovieDBContex
Żądanie do Movies
kontrolera zwraca wszystkie wpisy w Movies
tabeli bazy danych filmów, a następnie przekazuje wyniki do Index
widoku.
Silnie typizowane modele i @model słowo kluczowe
Wcześniej w tym samouczku pokazano, jak kontroler może przekazywać dane lub obiekty do szablonu widoku przy użyciu ViewBag
obiektu . Jest ViewBag
to obiekt dynamiczny, który zapewnia wygodny, opóźniony sposób przekazywania informacji do widoku.
ASP.NET MVC zapewnia również możliwość przekazywania silnie typiowanych danych lub obiektów do szablonu widoku. To silnie typizowane podejście umożliwia lepsze sprawdzanie czasu kompilacji kodu i bogatszą funkcję IntelliSense w edytorze visual Web Developer. Używamy tego podejścia z szablonem MoviesController
klasy i widoku Index.vbhtml .
Zwróć uwagę, że kod tworzy obiekt, gdy wywołuje View
metodę List
pomocnika w metodzie Index
akcji. Następnie kod przekazuje tę Movies
listę z kontrolera do widoku:
Function Index() As ViewResult
Return View(db.Movies.ToList())
End Function
Dołączając instrukcję @ModelType
w górnej części pliku szablonu widoku, można określić typ obiektu, którego oczekuje widok. Po utworzeniu kontrolera filmu program Visual Web Developer automatycznie uwzględnił następującą @model
instrukcję w górnej części pliku Index.vbhtml :
@ModelType IEnumerable(Of MvcMovie.Movie)
Ta @ModelType
dyrektywa umożliwia dostęp do listy filmów, które kontroler przekazał do widoku przy użyciu obiektu silnie typizowanego Model
. Na przykład w szablonie Index.vbhtml kod wykonuje pętlę w filmach, wykonując instrukcję foreach
dla silnie typizowanego Model
obiektu:
@For Each item In Model
Dim currentItem = item
@<tr>
<td>
@Html.DisplayFor(Function(modelItem) currentItem.Title)
</td>
<td>
@Html.DisplayFor(Function(modelItem) currentItem.ReleaseDate)
</td>
<td>
@Html.DisplayFor(Function(modelItem) currentItem.Genre)
</td>
<td>
@Html.DisplayFor(Function(modelItem) currentItem.Price)
</td>
<td>
@Html.ActionLink("Edit", "Edit", New With {.id = currentItem.ID}) |
@Html.ActionLink("Details", "Details", New With {.id = currentItem.ID}) |
@Html.ActionLink("Delete", "Delete", New With {.id = currentItem.ID})
</td>
</tr>
Next
Model
Ponieważ obiekt jest silnie typowany (jako IEnumerable<Movie>
obiekt), każdy item
obiekt w pętli jest wpisany jako Movie
. Między innymi oznacza to, że można sprawdzić czas kompilacji kodu i pełną obsługę funkcji IntelliSense w edytorze kodu:
Praca z SQL Server Compact
Program Entity Framework Code First wykrył, że parametry połączenia bazy danych, które zostały podane, wskazywały Movies
na bazę danych, która jeszcze nie istnieje, więc kod Code First automatycznie utworzył bazę danych. Możesz sprawdzić, czy został on utworzony, wyszukując go w folderze App_Data . Jeśli nie widzisz pliku Movies.sdf, kliknij przycisk Pokaż wszystkie pliki na pasku narzędzi Eksplorator rozwiązań, kliknij przycisk Odśwież, a następnie rozwiń folder App_Data.
Kliknij dwukrotnie plik Movies.sdf , aby otworzyć Eksploratora serwera. Następnie rozwiń folder Tables, aby wyświetlić tabele, które zostały utworzone w bazie danych.
Uwaga
Jeśli podczas dwukrotnego kliknięcia pliku Movies.sdf wystąpi błąd, upewnij się, że zainstalowano narzędzia Visual Studio 2010 SP1 tools for SQL Server Compact 4.0. (Aby uzyskać linki do oprogramowania, zobacz listę wymagań wstępnych w części 1 tej serii samouczków). Jeśli zainstalujesz wydanie teraz, musisz zamknąć i ponownie otworzyć program Visual Web Developer.
Istnieją dwie tabele: jedna dla Movie
zestawu jednostek, a następnie EdmMetadata
tabela. Tabela EdmMetadata
jest używana przez program Entity Framework do określenia, kiedy model i baza danych nie są zsynchronizowane.
Kliknij prawym przyciskiem myszy tabelę Movies
i wybierz polecenie Pokaż dane tabeli , aby wyświetlić utworzone dane.
Kliknij prawym przyciskiem myszy tabelę Movies
i wybierz polecenie Edytuj schemat tabeli.
Zwróć uwagę na sposób mapowania schematu Movies
tabeli na utworzoną wcześniej klasę Movie
. Program Entity Framework Code First automatycznie utworzył ten schemat na podstawie klasy Movie
.
Po zakończeniu zamknij połączenie. (Jeśli nie zamkniesz połączenia, może zostać wyświetlony błąd przy następnym uruchomieniu projektu).
Masz teraz bazę danych i prostą stronę listy do wyświetlania z niej zawartości. W następnym samouczku przeanalizujemy resztę kodu szkieletowego i dodamy metodę SearchIndex
i SearchIndex
widok, który umożliwia wyszukiwanie filmów w tej bazie danych.
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla