Sdílet prostřednictvím


Přidání sloupce do modelu

Scott Hanselman

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.

Úpravy tabulky filmů

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.

Filmy – Microsoft Visual Web Developer 2010 Express (11)

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.

Průvodce aktualizací (2)

Po kliknutí na Dokončit uvidíte, že se nový sloupec hodnocení přidal do entity Filmu v našem modelu.

Entita filmu

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.

Vytvoření filmu – Windows Internet Explorer

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.

Seznam filmů – Windows Internet Explorer (12)

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!