Přístup k datům modelu z kontroleru
Toto je kurz pro začátečníky, který představuje základy ASP.NET MVC. Vytvoříte jednoduchou webovou aplikaci, která čte a zapisuje z databáze. Další kurzy a ukázky ASP.NET MVC najdete ve výukovém centru ASP.NET MVC .
V této části vytvoříme novou třídu MoviesController a napíšeme kód, který načte data o filmech a zobrazí je zpět do prohlížeče pomocí šablony View.
Klikněte pravým tlačítkem na složku Controllers (Řadiče) a vytvořte nový MoviesController.
Tím se vytvoří nový soubor "MoviesController.cs" pod naší složkou \Controllers v rámci našeho projektu. Pojďme aktualizovat MovieController, aby načetl seznam filmů z nově naplněné databáze.
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());
}
}
}
Provádíme dotaz LINQ, abychom načítali jenom filmy vydané po létě 1984. K vykreslení tohoto seznamu filmů budeme potřebovat šablonu Zobrazení, takže klikněte pravým tlačítkem myši na metodu a vyberte Přidat zobrazení a vytvořte ji.
V dialogovém okně Přidat zobrazení označíme, že do šablony Zobrazení předáváme položku List<Movies.Models.Movie> . Na rozdíl od předchozích časů, kdy jsme použili dialogové okno Přidat zobrazení a zvolili jsme vytvoření prázdné šablony, tentokrát označíme, že chceme, aby pro nás Visual Studio automaticky "vygeneruje" šablonu zobrazení s výchozím obsahem. Provedeme to tak, že v rozevírací nabídce Zobrazit obsah vybereme položku Seznam.
Nezapomeňte, že když vytvoříte novou třídu, budete muset zkompilovat aplikaci, aby se zobrazila v dialogovém okně Přidat zobrazení.
Klikněte na přidat a systém automaticky vygeneruje kód pro zobrazení, které zobrazí náš seznam filmů. Je vhodný čas změnit <nadpis h2> na něco jako "Můj seznam filmů", jak jsme to udělali dříve v zobrazení Hello World.
Spusťte aplikaci a na panelu Adresa přejděte na /Movies. Teď jsme načetli data z databáze pomocí základního dotazu v kontroleru a vrátili je do zobrazení, které ví o filmech. Toto zobrazení pak prochází seznam filmů a vytvoří pro nás tabulku dat.
V této aplikaci nebudeme implementovat funkce Upravit, Podrobnosti a Odstranit, takže nebudeme potřebovat výchozí odkazy, které pro nás vytvořila šablona uživatelského rozhraní. Otevřete soubor /Movies/Index.aspx a odeberte ho.
Tady je zdrojový kód toho, jak by měla naše aktualizovaná šablona Zobrazení vypadat, jakmile provedeme tyto změny:
<%@ 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>
Vytváří odkazy, které nebudeme potřebovat, takže je v tomto příkladu odstraníme. Odkaz Vytvořit nový si ale ponecháme, protože to je další! Takto vypadá naše aplikace s odebraným sloupcem.
Teď máme jednoduchý výpis našich filmových dat. Pokud ale klikneme na odkaz Vytvořit nový, zobrazí se chyba, protože není propojený. Pojďme implementovat metodu Create Action (Vytvořit akci) a povolit uživateli zadávání nových filmů do naší databáze.