Přidání sloupce do modelu
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 si projdeme, jak můžeme provádět změny schématu naší databáze a zpracovávat změny v rámci naší aplikace.
Pojďme do tabulky Movie přidat sloupec Hodnocení. Zpět do integrovaného vývojového prostředí a klikněte na Průzkumníka databáze. Klikněte pravým tlačítkem na tabulku Movie (Video) a vyberte Open Table Definition (Otevřít definici tabulky).
Přidejte sloupec Hodnocení, jak je vidět níže. Vzhledem k tomu, že teď nemáme žádná hodnocení, sloupec může povolit hodnoty null. Klikněte na Uložit.
Pak se vraťte do Průzkumník řešení a otevřete soubor Movies.edmx (který je ve složce \Models). Klikněte pravým tlačítkem na návrhovou plochu (bílá oblast) a vyberte Aktualizovat model z databáze.
Tím se spustí Průvodce aktualizací. Klikněte na kartu Aktualizovat a klikněte na Dokončit. Třída Movie model se pak aktualizuje novým sloupcem.
Po kliknutí na Dokončit uvidíte, že se nový sloupec hodnocení přidal do entity Filmu v našem modelu.
Do modelu databáze jsme přidali sloupec, ale zobrazení o něm nevědí.
Aktualizovat zobrazení se změnami modelu
Existuje několik způsobů, jak aktualizovat šablony zobrazení tak, aby odrážely nový sloupec Hodnocení. Vzhledem k tomu, že jsme tato zobrazení vytvořili tak, že jsme je vygenerovali v dialogovém okně Přidat zobrazení, mohli bychom je odstranit a znovu vytvořit. Obvykle ale uživatelé už v šablonách zobrazení provedli změny z počáteční generování uživatelského rozhraní a budou chtít přidat nebo odstranit pole ručně, stejně jako jsme to udělali u pole ID pro Vytvořit.
Otevřete šablonu \Views\Movies\Index.aspx a do záhlaví tabulky Movie přidejte <th>Rating</th> . Přidal jsem svůj po Žánru. Potom ve stejné pozici sloupce, ale dole dole, přidejte řádek pro výstup našeho nového hodnocení.
<td>
<%: item.Rating %>
</td>
Naše finální šablona Index.aspx bude vypadat takto:
<%@ 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>Id</th>
<th>Title</th>
<th>ReleaseDate</th>
<th>Genre</th>
<th>Rating</th>
<th>Price</th>
</tr>
<% foreach (var item in Model)
{ %>
<tr>
<td><%: item.Id %></td>
<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>
Otevřeme šablonu \Views\Movies\Create.aspx a přidáme popisek a textové pole pro naši novou vlastnost Hodnocení:
<div class="editor-label">
<%: Html.LabelFor(model => model.Rating) %>
</div>
<div class="editor-field">
<%: Html.TextBoxFor(model => model.Rating)%>
<%: Html.ValidationMessageFor(model => model.Rating)%>
</div>
Naše poslední šablona Create.aspx bude vypadat takto a pojďme změnit název prohlížeče a sekundární <nadpis h2> na něco jako "Vytvořit film", dokud jsme tady!
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<Movies.Models.Movie>" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
Create a Movie
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<script src="../../Scripts/MicrosoftAjax.js" type="text/javascript"></script>
<script src="../../Scripts/MicrosoftMvcValidation.js" type="text/javascript"></script>
<h2>Create a Movie</h2>
<% Html.EnableClientValidation(); %>
<% using (Html.BeginForm()) {%>
<%: Html.ValidationSummary(true) %>
<fieldset>
<legend>Fields</legend>
<div class="editor-label">
<%: Html.LabelFor(model => model.Title) %>
</div>
<div class="editor-field">
<%: Html.TextBoxFor(model => model.Title) %>
<%: Html.ValidationMessageFor(model => model.Title) %>
</div>
<div class="editor-label">
<%: Html.LabelFor(model => model.ReleaseDate) %>
</div>
<div class="editor-field">
<%: Html.TextBoxFor(model => model.ReleaseDate) %>
<%: Html.ValidationMessageFor(model => model.ReleaseDate) %>
</div>
<div class="editor-label">
<%: Html.LabelFor(model => model.Genre) %>
</div>
<div class="editor-field">
<%: Html.TextBoxFor(model => model.Genre) %>
<%: Html.ValidationMessageFor(model => model.Genre) %>
</div>
<div class="editor-label">
<%: Html.LabelFor(model => model.Rating) %>
</div>
<div class="editor-field">
<%: Html.TextBoxFor(model => model.Rating)%>
<%: Html.ValidationMessageFor(model => model.Rating)%>
</div>
<div class="editor-label">
<%: Html.LabelFor(model => model.Price) %>
</div>
<div class="editor-field">
<%: Html.TextBoxFor(model => model.Price) %>
<%: Html.ValidationMessageFor(model => model.Price) %>
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
<% } %>
<div>
<%: Html.ActionLink("Back to List", "Index") %>
</div>
</asp:Content>
Spusťte aplikaci a teď máte v databázi nové pole, které bylo přidáno na stránku Vytvořit. Přidejte nový film – tentokrát s hodnocením – a klikněte na Vytvořit.
Po kliknutí na Vytvořit budete odesláni na stránku Index, kde je nový film uvedený s novým sloupcem hodnocení v databázi.
V tomto základním kurzu jste začali vytvářet kontrolery, přidružovat je k zobrazením a předávat pevně zakódovaná data. Pak jsme vytvořili a navrhli databázi a dali do ní nějaká data. Načetli jsme data z databáze a zobrazili je v tabulce HTML. Pak jsme přidali formulář Vytvořit, který uživateli umožňuje přidávat data do databáze z webové aplikace. Přidali jsme ověření a pak jsme provedli ověření pomocí JavaScriptu na straně klienta. Nakonec jsme změnili databázi tak, aby zahrnovala nový sloupec dat, a pak jsme aktualizovali naše dvě stránky, abychom vytvořili a zobrazili tato nová data.
Nyní vám doporučuji přejít na náš středně pokročilý kurz "MVC Music Store", stejně jako mnoho videí a zdrojů na https://asp.net/mvc , abyste se dozvěděli ještě více o ASP.NET MVC!
Užijte si ji!
- Scott Hanselman - http://hanselman.com a @shanselman na Twitteru.