Tworzenie aplikacji bazy danych filmów w ciągu 15 minut za pomocą wzorca ASP.NET MVC (C#)
Stephen Walther tworzy całą aplikację opartą na bazie danych ASP.NET MVC od początku do końca. Ten samouczek to doskonałe wprowadzenie dla osób, które są nowe w ASP.NET MVC Framework i które chcą zrozumieć proces tworzenia aplikacji ASP.NET MVC.
Celem tego samouczka jest zapewnienie poczucia "jak to jest" do utworzenia ASP.NET aplikacji MVC. W tym samouczku wysadzam się przez tworzenie całej aplikacji ASP.NET MVC od początku do końca. Pokazano, jak utworzyć prostą aplikację opartą na bazie danych, która ilustruje sposób wyświetlania listy, tworzenia i edytowania rekordów bazy danych.
Aby uprościć proces tworzenia aplikacji, skorzystamy z funkcji tworzenia szkieletów programu Visual Studio 2008. Pozwolimy programowi Visual Studio wygenerować początkowy kod i zawartość dla naszych kontrolerów, modeli i widoków.
Jeśli pracujesz z usługą Active Server Pages lub ASP.NET, warto znaleźć ASP.NET MVC bardzo znane. ASP.NET widoki MVC są bardzo podobne do stron w aplikacji Active Server Pages. Podobnie jak tradycyjna aplikacja ASP.NET Web Forms, ASP.NET MVC zapewnia pełny dostęp do bogatego zestawu języków i klas udostępnianych przez platformę .NET Framework.
Mam nadzieję, że w tym samouczku dowiesz się, jak środowisko tworzenia aplikacji ASP.NET MVC jest zarówno podobne, jak i inne niż środowisko tworzenia aplikacji Active Server Pages lub ASP.NET Web Forms aplikacji.
Omówienie aplikacji bazy danych filmów
Ponieważ naszym celem jest zachowanie prostoty, utworzymy bardzo prostą aplikację bazy danych Movie Database. Nasza prosta aplikacja Movie Database umożliwi nam wykonywanie trzech czynności:
- Wyświetlanie listy zestawów rekordów bazy danych filmów
- Tworzenie nowego rekordu bazy danych filmów
- Edytowanie istniejącego rekordu bazy danych filmów
Ponownie, ponieważ chcemy zachować prostotę, skorzystamy z minimalnej liczby funkcji platformy ASP.NET MVC potrzebnej do skompilowania naszej aplikacji. Na przykład nie będziemy korzystać z Test-Driven Development.
Aby utworzyć aplikację, musimy wykonać każdą z następujących czynności:
- Tworzenie projektu aplikacji internetowej ASP.NET MVC
- Tworzenie bazy danych
- Tworzenie modelu bazy danych
- Tworzenie kontrolera ASP.NET MVC
- Tworzenie widoków ASP.NET MVC
Akcje wstępne
Do utworzenia aplikacji ASP.NET MVC potrzebne są programy Visual Studio 2008 lub Visual Web Developer 2008 Express. Należy również pobrać platformę ASP.NET MVC.
Jeśli nie jesteś właścicielem programu Visual Studio 2008, możesz pobrać 90-dniową wersję próbną programu Visual Studio 2008 z tej witryny internetowej:
https://msdn.microsoft.com/vs2008/products/cc268305.aspx
Alternatywnie można tworzyć aplikacje ASP.NET MVC za pomocą programu Visual Web Developer Express 2008. Jeśli zdecydujesz się korzystać z programu Visual Web Developer Express, musisz mieć zainstalowany dodatek Service Pack 1. Możesz pobrać program Visual Web Developer 2008 Express z dodatkiem Service Pack 1 z tej witryny internetowej:
Po zainstalowaniu programu Visual Studio 2008 lub Visual Web Developer 2008 należy zainstalować platformę ASP.NET MVC. Platformę ASP.NET MVC można pobrać z następującej witryny internetowej:
Uwaga
Zamiast pobierać platformę ASP.NET i strukturę ASP.NET MVC indywidualnie, możesz skorzystać z Instalatora platformy internetowej. Instalator platformy internetowej to aplikacja, która umożliwia łatwe zarządzanie zainstalowanymi aplikacjami to komputer:
Tworzenie projektu aplikacji internetowej MVC ASP.NET
Zacznijmy od utworzenia nowego projektu aplikacji internetowej MVC ASP.NET w programie Visual Studio 2008. Wybierz opcję menu Plik, Nowy projekt , a w rysunku 1 zostanie wyświetlone okno dialogowe Nowy projekt. Wybierz język C# jako język programowania i wybierz szablon projektu aplikacji internetowej MVC ASP.NET MVC. Nadaj projektowi nazwę MovieApp i kliknij przycisk OK.
Rysunek 01. Okno dialogowe Nowy projekt (kliknij, aby wyświetlić obraz pełnowymiarowy)
Upewnij się, że wybrano pozycję .NET Framework 3.5 z listy rozwijanej w górnej części okna dialogowego Nowy projekt lub nie będzie wyświetlany szablon projektu aplikacji internetowej ASP.NET MVC.
Za każdym razem, gdy tworzysz nowy projekt aplikacji internetowej MVC, program Visual Studio monituje o utworzenie oddzielnego projektu testu jednostkowego. Zostanie wyświetlone okno dialogowe na rysunku 2. Ponieważ nie będziemy tworzyć testów w tym samouczku z powodu ograniczeń czasowych (i tak, powinniśmy czuć się trochę winni tego) wybierz opcję Nie i kliknij przycisk OK .
Uwaga
Program Visual Web Developer nie obsługuje projektów testowych.
Rysunek 02. Okno dialogowe Tworzenie projektu testu jednostkowego (kliknij, aby wyświetlić obraz pełnowymiarowy)
Aplikacja ASP.NET MVC ma standardowy zestaw folderów: folder Modele, Widoki i kontrolery. Ten standardowy zestaw folderów można zobaczyć w oknie Eksplorator rozwiązań. Musimy dodać pliki do każdego z folderów Modele, Widoki i Kontrolery, aby utworzyć aplikację bazy danych filmów.
Podczas tworzenia nowej aplikacji MVC przy użyciu programu Visual Studio uzyskasz przykładową aplikację. Ponieważ chcemy zacząć od podstaw, musimy usunąć zawartość tej przykładowej aplikacji. Należy usunąć następujący plik i następujący folder:
- Controllers\HomeController.cs
- Widoki\Strona główna
Tworzenie bazy danych
Musimy utworzyć bazę danych do przechowywania rekordów bazy danych filmów. Na szczęście program Visual Studio zawiera bezpłatną bazę danych o nazwie SQL Server Express. Wykonaj następujące kroki, aby utworzyć bazę danych:
- Kliknij prawym przyciskiem myszy folder App_Data w oknie Eksplorator rozwiązań i wybierz opcję menu Dodaj, Nowy element.
- Wybierz kategorię Dane i wybierz szablon bazy danych SQL Server (zobacz Rysunek 3).
- Nadaj nowej bazie danych nazwę MoviesDB.mdf i kliknij przycisk Dodaj .
Po utworzeniu bazy danych możesz połączyć się z bazą danych, klikając dwukrotnie plik MoviesDB.mdf znajdujący się w folderze App_Data. Dwukrotne kliknięcie pliku MoviesDB.mdf spowoduje otwarcie okna Eksploratora serwera.
Uwaga
Okno Eksploratora serwera nosi nazwę okna Eksploratora bazy danych w przypadku dewelopera visual web.
Rysunek 03. Tworzenie bazy danych microsoft SQL Server (kliknij, aby wyświetlić obraz pełnowymiarowy)
Następnie musimy utworzyć nową tabelę bazy danych. W oknie Eksplorator serwera kliknij prawym przyciskiem myszy folder Tabele i wybierz opcję menu Dodaj nową tabelę. Wybranie tej opcji menu powoduje otwarcie projektanta tabel bazy danych. Utwórz następujące kolumny bazy danych:
Nazwa kolumny | Typ danych | Zezwalaj na wartości null |
---|---|---|
Id | int | Fałsz |
Tytuł | Nvarchar(100) | Fałsz |
Dyrektor | Nvarchar(100) | Fałsz |
Data wydania | DateTime | Fałsz |
Pierwsza kolumna, kolumna Id, ma dwie właściwości specjalne. Najpierw musisz oznaczyć kolumnę Id jako kolumnę klucza podstawowego. Po wybraniu kolumny Identyfikator kliknij przycisk Ustaw klucz podstawowy (jest to ikona, która wygląda jak klucz). Po drugie, musisz oznaczyć kolumnę Id jako kolumnę Tożsamość. W okno Właściwości kolumny przewiń w dół do sekcji Specyfikacja tożsamości i rozwiń ją. Zmień właściwość Is Identity na wartość Tak. Po zakończeniu tabela powinna wyglądać jak Rysunek 4.
Rysunek 04. Tabela bazy danych Filmy (kliknij, aby wyświetlić obraz pełnowymiarowy)
Ostatnim krokiem jest zapisanie nowej tabeli. Kliknij przycisk Zapisz (ikonę dyskietki) i nadaj nowej tabeli nazwę Filmy.
Po zakończeniu tworzenia tabeli dodaj do tabeli kilka rekordów filmowych. Kliknij prawym przyciskiem myszy tabelę Filmy w oknie Eksplorator serwera i wybierz opcję menu Pokaż dane tabeli. Wprowadź listę ulubionych filmów (zobacz Rysunek 5).
Rysunek 05. Wprowadzanie rekordów filmowych (kliknij, aby wyświetlić obraz pełnowymiarowy)
Tworzenie modelu
Następnie musimy utworzyć zestaw klas reprezentujących naszą bazę danych. Musimy utworzyć model bazy danych. Skorzystamy z programu Microsoft Entity Framework, aby automatycznie wygenerować klasy dla naszego modelu bazy danych.
Uwaga
Struktura ASP.NET MVC nie jest powiązana z programem Microsoft Entity Framework. Klasy modelu bazy danych można tworzyć, korzystając z różnych narzędzi mapowania relacyjnego obiektów (OR/M), takich jak LINQ to SQL, Subsonic i NHibernate.
Wykonaj następujące kroki, aby uruchomić Kreatora modelu danych jednostek:
- Kliknij prawym przyciskiem myszy folder Models w oknie Eksplorator rozwiązań i wybierz opcję menu Dodaj, Nowy element.
- Wybierz kategorię Dane i wybierz szablon modelu danych jednostki ADO.NET.
- Nadaj modelowi danych nazwę MoviesDBModel.edmx i kliknij przycisk Dodaj .
Po kliknięciu przycisku Dodaj zostanie wyświetlony Kreator modelu danych jednostki (zobacz Rysunek 6). Wykonaj następujące kroki, aby ukończyć pracę kreatora:
- W kroku Wybieranie zawartości modelu wybierz opcję Generuj z bazy danych .
- W kroku Wybierz połączenie danych użyj połączenia danych MoviesDB.mdf i nazwy MoviesDBEntities dla ustawień połączenia. Kliknij przycisk Dalej.
- W kroku Wybieranie obiektów bazy danych rozwiń węzeł Tabele, wybierz tabelę Filmy. Wprowadź przestrzeń nazw MovieApp.Models i kliknij przycisk Zakończ .
Rysunek 06. Generowanie modelu bazy danych za pomocą Kreatora modelu danych jednostek (kliknij, aby wyświetlić obraz pełnowymiarowy)
Po zakończeniu pracy Kreatora modelu danych jednostki zostanie otwarty Projektant modelu danych jednostki. Projektant powinna wyświetlić tabelę bazy danych Filmy (patrz Rysunek 7).
Rysunek 07. Model danych jednostki Projektant (kliknij, aby wyświetlić obraz pełnowymiarowy)
Zanim przejdziemy dalej, musimy wprowadzić jedną zmianę. Kreator danych jednostki generuje klasę modelu o nazwie Filmy reprezentujące tabelę bazy danych Filmy. Ponieważ użyjemy klasy Movies do reprezentowania określonego filmu, musimy zmodyfikować nazwę klasy jako Film zamiast Filmów (pojedyncza, a nie mnoga).
Kliknij dwukrotnie nazwę klasy na powierzchni projektanta i zmień nazwę klasy z Movie na Movie. Po wprowadzeniu tej zmiany kliknij przycisk Zapisz (ikonę dyskietki), aby wygenerować klasę Movie.
Tworzenie kontrolera MVC ASP.NET
Następnym krokiem jest utworzenie kontrolera ASP.NET MVC. Kontroler jest odpowiedzialny za kontrolowanie sposobu interakcji użytkownika z aplikacją MVC ASP.NET.
Wykonaj następujące kroki:
- W oknie Eksplorator rozwiązań kliknij prawym przyciskiem myszy folder Kontrolery i wybierz opcję menu Dodaj, Kontroler.
- W oknie dialogowym Dodawanie kontrolera wprowadź nazwę HomeController i zaznacz pole wyboru z etykietą Dodaj metody akcji dla scenariuszy Tworzenie, aktualizowanie i szczegóły (zobacz Rysunek 8).
- Kliknij przycisk Dodaj , aby dodać nowy kontroler do projektu.
Po wykonaniu tych kroków zostanie utworzony kontroler na liście 1. Zwróć uwagę, że zawiera metody o nazwie Index, Details, Create i Edit. W poniższych sekcjach dodamy niezbędny kod, aby te metody działały.
Rysunek 08. Dodawanie nowego kontrolera MVC ASP.NET (kliknij, aby wyświetlić obraz pełnowymiarowy)
Lista 1 — Controllers\HomeController.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Ajax;
namespace MovieApp.Controllers
{
public class HomeController : Controller
{
//
// GET: /Home/
public ActionResult Index()
{
return View();
}
//
// GET: /Home/Details/5
public ActionResult Details(int id)
{
return View();
}
//
// GET: /Home/Create
public ActionResult Create()
{
return View();
}
//
// POST: /Home/Create
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(FormCollection collection)
{
try
{
// TODO: Add insert logic here
return RedirectToAction("Index");
}
catch
{
return View();
}
}
//
// GET: /Home/Edit/5
public ActionResult Edit(int id)
{
return View();
}
//
// POST: /Home/Edit/5
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(int id, FormCollection collection)
{
try
{
// TODO: Add update logic here
return RedirectToAction("Index");
}
catch
{
return View();
}
}
}
}
Wyświetlanie listy rekordów bazy danych
Metoda Index() kontrolera home jest domyślną metodą ASP.NET aplikacji MVC. Po uruchomieniu aplikacji ASP.NET MVC metoda Index() jest pierwszą wywoływaną metodą kontrolera.
Użyjemy metody Index(), aby wyświetlić listę rekordów z tabeli bazy danych Filmy. Skorzystamy z utworzonych wcześniej klas modelu bazy danych, aby pobrać rekordy bazy danych filmów za pomocą metody Index().
Zmodyfikowałem klasę HomeController w listu 2, aby zawierała nowe pole prywatne o nazwie _db. Klasa MoviesDBEntities reprezentuje nasz model bazy danych i użyjemy tej klasy do komunikowania się z naszą bazą danych.
Zmodyfikowano również metodę Index() w liście 2. Metoda Index() używa klasy MoviesDBEntities, aby pobrać wszystkie rekordy filmów z tabeli bazy danych Filmy. Wyrażenie _db. Element MovieSet.ToList() zwraca listę wszystkich rekordów filmów z tabeli bazy danych Movies.
Lista filmów jest przekazywana do widoku. Wszystkie dane przekazywane do metody View() są przekazywane do widoku jako dane widoku.
Lista 2 — Controllers/HomeController.cs (zmodyfikowana metoda indeksu)
using System.Linq;
using System.Web.Mvc;
using MovieApp.Models;
namespace MovieApp.Controllers
{
public class HomeController : Controller
{
private MoviesDBEntities _db = new MoviesDBEntities();
public ActionResult Index()
{
return View(_db.MovieSet.ToList());
}
}
}
Metoda Index() zwraca widok o nazwie Index. Musimy utworzyć ten widok, aby wyświetlić listę rekordów bazy danych filmów. Wykonaj następujące kroki:
Przed otwarciem okna dialogowego Dodawanie widoku należy skompilować projekt (wybierz opcję menu Build, Build Solution) lub na liście rozwijanej Wyświetl klasę danych nie będą wyświetlane żadne klasy.
- Kliknij prawym przyciskiem myszy metodę Index() w edytorze kodu i wybierz opcję menu Dodaj widok (zobacz Rysunek 9).
- W oknie dialogowym Dodawanie widoku sprawdź, czy pole wyboru z etykietą Utwórz silnie wpisany widok jest zaznaczone.
- Z listy rozwijanej Wyświetl zawartość wybierz wartość Lista.
- Z listy rozwijanej Wyświetl klasę danych wybierz wartość MovieApp.Models.Movie.
- Kliknij przycisk Dodaj, aby utworzyć nowy widok (zobacz Rysunek 10).
Po wykonaniu tych kroków do folderu Views\Home zostanie dodany nowy widok o nazwie Index.aspx. Zawartość widoku indeksu znajduje się na liście 3.
Rysunek 09. Dodawanie widoku z akcji kontrolera (kliknij, aby wyświetlić obraz pełnowymiarowy)
Rysunek 10. Tworzenie nowego widoku za pomocą okna dialogowego Dodawanie widoku (kliknij, aby wyświetlić obraz pełnowymiarowy)
Lista 3 — Views\Home\Index.aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<MovieApp.Models.Movie>>" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
Index
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<h2>Index</h2>
<table>
<tr>
<th></th>
<th>
Id
</th>
<th>
Title
</th>
<th>
Director
</th>
<th>
DateReleased
</th>
</tr>
<% foreach (var item in Model) { %>
<tr>
<td>
<%= Html.ActionLink("Edit", "Edit", new { id=item.Id }) %> |
<%= Html.ActionLink("Details", "Details", new { id=item.Id })%>
</td>
<td>
<%= Html.Encode(item.Id) %>
</td>
<td>
<%= Html.Encode(item.Title) %>
</td>
<td>
<%= Html.Encode(item.Director) %>
</td>
<td>
<%= Html.Encode(String.Format("{0:g}", item.DateReleased)) %>
</td>
</tr>
<% } %>
</table>
<p>
<%= Html.ActionLink("Create New", "Create") %>
</p>
</asp:Content>
Widok Indeks wyświetla wszystkie rekordy filmów z tabeli bazy danych Filmy w tabeli HTML. Widok zawiera pętlę foreach, która iteruje każdy film reprezentowany przez właściwość ViewData.Model. Jeśli uruchomisz aplikację, naciskając klawisz F5, zobaczysz stronę internetową na rysunku 11.
Rysunek 11. Widok indeksu (kliknij, aby wyświetlić obraz pełnowymiarowy)
Tworzenie nowych rekordów bazy danych
Widok indeksu utworzony w poprzedniej sekcji zawiera link do tworzenia nowych rekordów bazy danych. Przejdźmy do przodu i zaimplementujmy logikę i utwórzmy widok niezbędny do utworzenia nowych rekordów bazy danych filmów.
Kontroler główny zawiera dwie metody o nazwie Create(). Pierwsza metoda Create() nie ma parametrów. To przeciążenie metody Create() służy do wyświetlania formularza HTML do tworzenia nowego rekordu bazy danych filmów.
Druga metoda Create() ma parametr FormCollection. To przeciążenie metody Create() jest wywoływane, gdy formularz HTML do tworzenia nowego filmu jest publikowany na serwerze. Zauważ, że ta druga metoda Create() ma atrybut AcceptVerbs, który uniemożliwia wywoływanie metody, chyba że jest wykonywana operacja HTTP POST.
Ta druga metoda Create() została zmodyfikowana w zaktualizowanej klasie HomeController na liście 4. Nowa wersja metody Create() akceptuje parametr Movie i zawiera logikę wstawiania nowego filmu do tabeli bazy danych Filmy.
Uwaga
Zwróć uwagę na atrybut Bind. Ponieważ nie chcemy aktualizować właściwości Identyfikator filmu z formularza HTML, musimy jawnie wykluczyć tę właściwość.
Lista 4 — Controllers\HomeController.cs (zmodyfikowana metoda Create)
//
// GET: /Home/Create
public ActionResult Create()
{
return View();
}
//
// POST: /Home/Create
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create([Bind(Exclude="Id")] Movie movieToCreate)
{
if (!ModelState.IsValid)
return View();
_db.AddToMovieSet(movieToCreate);
_db.SaveChanges();
return RedirectToAction("Index");
}
Program Visual Studio ułatwia tworzenie formularza do tworzenia nowego rekordu bazy danych filmów (zobacz Rysunek 12). Wykonaj następujące kroki:
- Kliknij prawym przyciskiem myszy metodę Create() w edytorze kodu i wybierz opcję menu Dodaj widok.
- Sprawdź, czy pole wyboru z etykietą Utwórz silnie typizowany widok jest zaznaczone.
- Z listy rozwijanej Wyświetl zawartość wybierz wartość Utwórz.
- Z listy rozwijanej Wyświetl klasę danych wybierz wartość MovieApp.Models.Movie.
- Kliknij przycisk Dodaj , aby utworzyć nowy widok.
Rysunek 12. Dodawanie widoku Tworzenie (kliknij, aby wyświetlić obraz pełnowymiarowy)
Program Visual Studio automatycznie generuje widok na liście 5. Ten widok zawiera formularz HTML, który zawiera pola odpowiadające każdej właściwości klasy Movie.
Lista 5 — Views\Home\Create.aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<MovieApp.Models.Movie>" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
Create
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<h2>Create</h2>
<%= Html.ValidationSummary("Create was unsuccessful. Please correct the errors and try again.") %>
<% using (Html.BeginForm()) {%>
<fieldset>
<legend>Fields</legend>
<p>
<label for="Id">Id:</label>
<%= Html.TextBox("Id") %>
<%= Html.ValidationMessage("Id", "*") %>
</p>
<p>
<label for="Title">Title:</label>
<%= Html.TextBox("Title") %>
<%= Html.ValidationMessage("Title", "*") %>
</p>
<p>
<label for="Director">Director:</label>
<%= Html.TextBox("Director") %>
<%= Html.ValidationMessage("Director", "*") %>
</p>
<p>
<label for="DateReleased">DateReleased:</label>
<%= Html.TextBox("DateReleased") %>
<%= Html.ValidationMessage("DateReleased", "*") %>
</p>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
<% } %>
<div>
<%=Html.ActionLink("Back to List", "Index") %>
</div>
</asp:Content>
Uwaga
Formularz HTML wygenerowany przez okno dialogowe Dodawanie widoku generuje pole Formularza identyfikatora. Ponieważ kolumna Id jest kolumną Identity, nie potrzebujemy tego pola formularza i można ją bezpiecznie usunąć.
Po dodaniu widoku Tworzenie możesz dodać nowe rekordy Movie do bazy danych. Uruchom aplikację, naciskając klawisz F5, a następnie kliknij link Utwórz nowy, aby wyświetlić formularz na rysunku 13. Po zakończeniu i przesłaniu formularza zostanie utworzony nowy rekord bazy danych filmów.
Zwróć uwagę, że walidacja formularza jest automatycznie uzyskiwana. Jeśli nie wprowadzisz daty wydania filmu lub wprowadzisz nieprawidłową datę wydania, formularz zostanie ponownie odtworzona, a pole data wydania zostanie wyróżnione.
Rysunek 13. Tworzenie nowego rekordu bazy danych filmów (kliknij, aby wyświetlić obraz pełnowymiarowy)
Edytowanie istniejących rekordów bazy danych
W poprzednich sekcjach omówiono sposób wyświetlania listy i tworzenia nowych rekordów bazy danych. W tej ostatniej sekcji omówimy sposób edytowania istniejących rekordów bazy danych.
Najpierw musimy wygenerować formularz Edycja. Ten krok jest łatwy, ponieważ program Visual Studio automatycznie wygeneruje formularz Edytuj. Otwórz klasę HomeController.cs w edytorze programu Visual Studio Code i wykonaj następujące kroki:
- Kliknij prawym przyciskiem myszy metodę Edit() w edytorze kodu i wybierz opcję menu Dodaj widok (zobacz Rysunek 14).
- Zaznacz pole wyboru z etykietą Utwórz silnie typizowany widok.
- Z listy rozwijanej Wyświetl zawartość wybierz wartość Edytuj.
- Z listy rozwijanej Wyświetl klasę danych wybierz wartość MovieApp.Models.Movie.
- Kliknij przycisk Dodaj , aby utworzyć nowy widok.
Wykonanie tych kroków spowoduje dodanie nowego widoku o nazwie Edit.aspx do folderu Views\Home. Ten widok zawiera formularz HTML do edycji rekordu filmu.
Rysunek 14. Dodawanie widoku edycji (kliknij, aby wyświetlić obraz pełnowymiarowy)
Uwaga
Widok Edycji zawiera pole formularza HTML odpowiadające właściwości Identyfikator filmu. Ponieważ nie chcesz, aby osoby edytujące wartość właściwości Id, należy usunąć to pole formularza.
Na koniec musimy zmodyfikować kontroler home tak, aby obsługiwał edytowanie rekordu bazy danych. Zaktualizowana klasa HomeController jest zawarta w liście 6.
Lista 6 — Controllers\HomeController.cs (metody edycji)
//
// GET: /Home/Edit/5
public ActionResult Edit(int id)
{
var movieToEdit = (from m in _db.MovieSet
where m.Id == id
select m).First();
return View(movieToEdit);
}
//
// POST: /Home/Edit/5
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(Movie movieToEdit)
{
var originalMovie = (from m in _db.MovieSet
where m.Id == movieToEdit.Id
select m).First();
if (!ModelState.IsValid)
return View(originalMovie);
_db.ApplyPropertyChanges(originalMovie.EntityKey.EntitySetName, movieToEdit);
_db.SaveChanges();
return RedirectToAction("Index");
}
Na liście 6 dodano dodatkową logikę do obu przeciążeń metody Edit(). Pierwsza metoda Edit() zwraca rekord bazy danych filmów, który odpowiada parametrowi Id przekazanemu do metody . Drugie przeciążenie wykonuje aktualizacje rekordu filmu w bazie danych.
Zwróć uwagę, że musisz pobrać oryginalny film, a następnie wywołać metodę ApplyPropertyChanges(), aby zaktualizować istniejący film w bazie danych.
Podsumowanie
Celem tego samouczka było zapewnienie doświadczenia w tworzeniu ASP.NET aplikacji MVC. Mam nadzieję, że odkryliśmy, że kompilowanie aplikacji internetowej MVC ASP.NET jest bardzo podobne do środowiska tworzenia aplikacji Active Server Pages lub ASP.NET.
W tym samouczku przeanalizowaliśmy tylko najbardziej podstawowe funkcje platformy ASP.NET MVC. W przyszłych samouczkach bardziej szczegółowo omawiamy tematy, takie jak kontrolery, akcje kontrolera, widoki, wyświetlanie danych i pomocnicy HTML.
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