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.

Dodawanie kontrolera

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.

Dodaj widok

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.

Filmy — Microsoft Visual Web Developer 2010 Express

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.

Zrzut ekranu przedstawiający okno przeglądarki Internet Explorer z listą Filmów z ghostbusters 2 i Ghostbusters 3 na liście.

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ą.

Zrzut ekranu przedstawiający okno przeglądarki Internet Explorer, w którym jest wyświetlana lista moich filmów z usuniętymi linkami Edytuj, Szczegóły i Usuń.

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.