Uzyskiwanie dostępu do danych modelu za pomocą kontrolera
Autor : Scott Hanselman
Jest to samouczek dla początkujących, który wprowadza podstawy ASP.NET MVC. Utworzysz prostą aplikację internetową, która odczytuje i zapisuje dane z bazy danych. Odwiedź centrum szkoleniowe ASP.NET MVC , aby znaleźć inne ASP.NET samouczki i przykłady mvc.
W tej sekcji utworzymy nową klasę MoviesController i napiszemy kod, który pobiera dane z filmu i wyświetla go z powrotem w przeglądarce przy użyciu szablonu Wyświetl.
Kliknij prawym przyciskiem myszy folder Controllers i utwórz nowy element MoviesController.
Spowoduje to utworzenie nowego pliku "MoviesController.cs" pod folderem \Controllers w naszym projekcie. Zaktualizujmy element MovieController, aby pobrać listę filmów z nowo wypełnionej bazy danych.
using System;
using System.Linq;
using System.Web.Mvc;
using Movies.Models;
namespace Movies.Controllers
{
public class MoviesController : Controller
{
MoviesEntities db = new MoviesEntities();
public ActionResult Index()
{
var movies = from m in db.Movies
where m.ReleaseDate > new DateTime(1984, 6, 1)
select m;
return View(movies.ToList());
}
}
}
Wykonujemy zapytanie LINQ, aby pobierać tylko filmy wydane po lecie 1984 roku. Do renderowania tej listy filmów będzie potrzebny szablon Widok, więc kliknij prawym przyciskiem myszy metodę i wybierz polecenie Dodaj widok, aby go utworzyć.
W oknie dialogowym Dodawanie widoku wskażemy, że przekazujemy szablon List<Movies.Models.Movie> do naszego szablonu Widok. W przeciwieństwie do poprzednich przypadków, w których użyliśmy okna dialogowego Dodawanie widoku i wybraliśmy opcję utworzenia szablonu "Empty", tym razem wskażemy, że program Visual Studio będzie automatycznie "szkielet" szablonu widoku dla nas z domyślną zawartością. W tym celu wybierzemy element "Lista" w menu rozwijanym "Wyświetl zawartość".
Pamiętaj, że po utworzeniu nowej klasy należy skompilować aplikację, aby była wyświetlana w oknie dialogowym Dodawanie widoku.
Kliknij przycisk Dodaj, a system automatycznie wygeneruje kod widoku dla nas, który wyświetla naszą listę filmów. Jest to dobry moment, aby zmienić <nagłówek h2> na podobny do "Moja lista filmów", jak wcześniej z widokiem Hello world.
Uruchom aplikację i przejdź do /Movies na pasku adresu. Teraz pobraliśmy dane z bazy danych przy użyciu podstawowego zapytania wewnątrz kontrolera i zwróciliśmy dane do widoku, który zna filmy. Ten widok następnie uruchamia listę filmów i tworzy dla nas tabelę danych.
Nie będziemy implementować funkcji Edytuj, Szczegóły i Usuń w tej aplikacji — dlatego nie potrzebujemy domyślnych linków utworzonych dla nas przez szablon szkieletu. Otwórz plik /Movies/Index.aspx i usuń go.
Oto kod źródłowy tego, jak powinien wyglądać nasz zaktualizowany szablon Widok po wprowadzeniu następujących zmian:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<Movies.Models.Movie>>" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
Movie List
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<h2>My Movie List</h2>
<table>
<tr>
<th>Title</th>
<th>ReleaseDate</th>
<th>Genre</th>
<th>Rating</th>
<th>Price</th>
</tr>
<% foreach (var item in Model)
{ %>
<tr>
<td><%: item.Title %></td>
<td><%: String.Format("{0:g}", item.ReleaseDate) %></td>
<td><%: item.Genre %></td>
<td><%: item.Rating %></td>
<td><%: String.Format("{0:F}", item.Price) %></td>
</tr>
<% } %>
</table>
<p>
<%: Html.ActionLink("Create New", "Create") %>
</p>
</asp:Content>
Tworzy łącza, których nie będziemy potrzebować, więc usuniemy je na potrzeby tego przykładu. Zachowamy jednak nasz link Utwórz nowy, tak jak to będzie dalej! Oto jak wygląda nasza aplikacja z usuniętą kolumną.
Mamy teraz prostą listę naszych danych filmowych. Jeśli jednak klikniemy link "Utwórz nowy", zostanie wyświetlony błąd, ponieważ nie jest on przyłączony! Zaimplementujmy metodę Create Action i umożliwimy użytkownikowi wprowadzanie nowych filmów w naszej 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