Добавление столбца в модель
Скотт Хансельман (Scott Hanselman)
В этом руководстве для начинающих рассматриваются основы ASP.NET MVC. Вы создадите простое веб-приложение, которое считывает и записывает данные из базы данных. Посетите центр обучения ASP.NET MVC , чтобы найти другие ASP.NET учебники и примеры MVC.
В этом разделе мы рассмотрим, как вносить изменения в схему базы данных и обрабатывать изменения в приложении.
Давайте добавим столбец "Оценка" в таблицу Movie. Назад в интегрированную среду разработки и щелкните Обозреватель База данных. Щелкните правой кнопкой мыши таблицу Movie и выберите Открыть определение таблицы.
Добавьте столбец "Оценка", как показано ниже. Так как у нас нет оценок, столбец может разрешать значения NULL. Нажмите кнопку «Сохранить».
Затем вернитесь к Обозреватель решений и откройте файл Movies.edmx (который находится в папке \Models). Щелкните правой кнопкой мыши область конструктора (белую область) и выберите Обновить модель из базы данных.
Откроется мастер обновления. Перейдите на вкладку Обновить и нажмите кнопку Готово. Затем класс модели Movie будет обновлен с помощью нового столбца.
После нажатия кнопки Готово вы увидите, что новый столбец рейтинга добавлен в сущность Movie в нашей модели.
Мы добавили столбец в модель базы данных, но представления не знают об этом.
Обновление представлений с помощью изменений модели
Существует несколько способов обновления шаблонов представлений для отражения нового столбца Оценка. Так как мы создали эти представления, создав их с помощью диалогового окна Добавление представления, мы могли бы удалить их и повторно создать. Однако обычно пользователи уже внесли изменения в свои шаблоны представления из первоначального формирования шаблонов и хотят добавить или удалить поля вручную, как это было с полем идентификатора для создания.
Откройте шаблон \Views\Movies\Index.aspx и добавьте <th>Rating</th> в начало таблицы Movie. Я добавил свой после жанра. Затем в той же позиции столбца, но ниже вниз, добавьте строку, чтобы вывести нашу новую оценку.
<td>
<%: item.Rating %>
</td>
Наш окончательный шаблон Index.aspx будет выглядеть следующим образом:
<%@ 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>
Затем давайте откроем шаблон \Views\Movies\Create.aspx и добавим метку и текстовое поле для нашего нового свойства Rating:
<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>
Наш окончательный шаблон Create.aspx будет выглядеть следующим образом, и давайте изменим заголовок браузера и дополнительное <название h2> на что-то вроде "Создать фильм", пока мы здесь!
<%@ 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>
Запустите приложение, и теперь у вас есть новое поле в базе данных, которое было добавлено на страницу Создание. Добавьте новый фильм (на этот раз с рейтингом) и нажмите кнопку Создать.
После нажатия кнопки Создать вы перейдете на страницу Индекс, где будет отображаться новый фильм с новым столбцом оценки в базе данных.
В этом базовом руководстве вы начали создавать контроллеры, связывать их с представлениями и передавать жестко закодированные данные. Затем мы создали и разработали базу данных и поместили в нее некоторые данные. Мы извлекли данные из базы данных и отображали их в таблице HTML. Затем мы добавили форму создания, которая позволяет пользователю самостоятельно добавлять данные в базу данных из веб-приложения. Мы добавили проверку, а затем сделали проверку с использованием JavaScript на стороне клиента. Наконец, мы изменили базу данных, включив новый столбец данных, а затем обновили две страницы, чтобы создать и отобразить эти новые данные.
Теперь я призываю вас перейти к нашему учебнику промежуточного уровня "MVC Music Store", а также к множеству видео и ресурсов на сайте https://asp.net/mvc , чтобы узнать еще больше о ASP.NET MVC!
Желаем удачи!
- Скотт Хансельман - http://hanselman.com и @shanselman на Twitter.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по