Поделиться через


Создание приложения для базы данных Movie за 15 минут с помощью ASP.NET MVC (C#)

Стивен Уолтер

Скачивание кода

Стивен Уолтер создает полностью управляемое базой данных приложение ASP.NET MVC с начала до конца. Это руководство является отличным введением для пользователей, которые не знакомы с ASP.NET MVC Framework и которые хотят получить представление о процессе создания приложения ASP.NET MVC.

Цель этого руководства — дать вам представление о том, как это такое, чтобы создать приложение ASP.NET MVC. В этом руководстве описано, как создать все ASP.NET приложение MVC с начала до конца. Я показываю, как создать простое приложение, управляемое базой данных, которое иллюстрирует возможность перечисления, создания и редактирования записей базы данных.

Чтобы упростить процесс создания приложения, мы воспользуемся преимуществами шаблонов Visual Studio 2008. Мы позволим Visual Studio создавать исходный код и содержимое для наших контроллеров, моделей и представлений.

Если вы работали с активными страницами сервера или ASP.NET, то вы должны найти ASP.NET MVC очень знакомы. ASP.NET представления MVC очень похожи на страницы в приложении Active Server Pages. И, как и традиционное приложение ASP.NET веб-формы, ASP.NET MVC предоставляет полный доступ к богатому набору языков и классов, предоставляемых платформой .NET.

Я надеюсь, что это руководство даст вам представление о том, как создать приложение ASP.NET MVC аналогично и отличается от опыта создания страниц Active Server или ASP.NET веб-формы приложения.

Общие сведения о приложении базы данных "Фильм"

Поскольку наша цель заключается в том, чтобы держать вещи простыми, мы создадим очень простое приложение базы данных фильмов. Наше простое приложение "База данных фильмов" позволит нам выполнить три действия.

  1. Перечисление набора записей базы данных фильма
  2. Создание записи базы данных фильма
  3. Изменение существующей записи базы данных фильма

Опять же, так как мы хотим упростить работу, мы воспользуемся минимальным количеством функций платформы MVC ASP.NET, необходимой для создания приложения. Например, мы не будем использовать преимущества разработки на основе тестов.

Чтобы создать приложение, необходимо выполнить все следующие действия:

  1. Создание проекта веб-приложения MVC ASP.NET
  2. Создание базы данных
  3. Создание модели базы данных
  4. Создание контроллера MVC ASP.NET
  5. Создание представлений MVC ASP.NET

Предварительные требования

Для создания приложения ASP.NET MVC вам потребуется Visual Studio 2008 или Visual Web Developer 2008 Express. Кроме того, необходимо скачать платформу MVC ASP.NET.

Если вы не владеете Visual Studio 2008, вы можете скачать 90-дневную пробную версию Visual Studio 2008 на этом веб-сайте:

https://msdn.microsoft.com/vs2008/products/cc268305.aspx

Кроме того, можно создавать приложения MVC ASP.NET с помощью Visual Web Developer Express 2008. Если вы решили использовать Visual Web Developer Express, необходимо установить пакет обновления 1 (SP1). Visual Web Developer 2008 Express можно скачать с помощью пакета обновления 1 с помощью этого веб-сайта:

https://www.microsoft.com/downloads/details.aspx?FamilyId=BDB6391C-05CA-4036-9154-6DF4F6DEBD14& displaylang=en

После установки Visual Studio 2008 или Visual Web Developer 2008 необходимо установить платформу MVC ASP.NET. Платформу MVC ASP.NET можно скачать на следующем веб-сайте:

https://www.asp.net/mvc/

Примечание.

Вместо скачивания платформы ASP.NET и платформы ASP.NET MVC можно воспользоваться преимуществами установщика веб-платформы. Установщик веб-платформы — это приложение, которое позволяет легко управлять установленными приложениями на компьютере.

Создание проекта веб-приложения MVC ASP.NET

Начнем с создания проекта веб-приложения MVC ASP.NET в Visual Studio 2008. Выберите пункт меню "Файл", "Новый проект" и откроется диалоговое окно "Новый проект " на рис. 1. Выберите C# в качестве языка программирования и выберите шаблон проекта веб-приложения MVC ASP.NET. Присвойте проекту имя MovieApp и нажмите кнопку "ОК".

Снимок экрана: диалоговое окно

Рис. 01. Диалоговое окно "Новый проект" (щелкните, чтобы просмотреть изображение полного размера)

Убедитесь, что вы выбрали платформа .NET Framework 3.5 в раскрывающемся списке в верхней части диалогового окна "Новый проект" ASP.NET или шаблон проекта веб-приложения MVC не появится.

При создании проекта веб-приложения MVC Visual Studio предложит создать отдельный модульный тестовый проект. Откроется диалоговое окно на рис. 2. Так как мы не будем создавать тесты в этом руководстве из-за ограничений времени (и да, мы должны чувствовать себя немного виноватыми в этом) выберите параметр "Нет " и нажмите кнопку "ОК ".

Примечание.

Visual Web Developer не поддерживает тестовые проекты.

Снимок экрана: создание проекта модульного теста, в котором показано,нет, не создавайте выбранный проект модульного теста.

Рис. 02. Диалоговое окно "Создание проекта модульного теста" (щелкните, чтобы просмотреть изображение полного размера)

Приложение ASP.NET MVC имеет стандартный набор папок: папку "Модели", "Представления" и "Контроллеры". Этот стандартный набор папок можно увидеть в окне Обозреватель решений. Для создания приложения "База данных фильмов" необходимо добавить файлы в каждую папку "Модели", "Представления" и "Контроллеры".

При создании нового приложения MVC с помощью Visual Studio вы получите пример приложения. Так как мы хотим начать с нуля, необходимо удалить содержимое для этого примера приложения. Необходимо удалить следующий файл и следующую папку:

  • Контроллеры\HomeController.cs
  • Представления\Главная

Создание базы данных

Нам нужно создать базу данных для хранения записей базы данных фильма. К счастью, Visual Studio включает бесплатную базу данных с именем SQL Server Express. Выполните следующие действия, чтобы создать базу данных:

  1. Щелкните правой кнопкой мыши папку App_Data в окне Обозреватель решений и выберите пункт меню "Добавить", "Создать элемент".
  2. Выберите категорию данных и выберите шаблон базы данных SQL Server (см. рис. 3).
  3. Назовите новую базу данных MoviesDB.mdf и нажмите кнопку "Добавить ".

После создания базы данных можно подключиться к базе данных, дважды щелкнув файл MoviesDB.mdf, расположенный в папке App_Data. Дважды щелкнув файл MoviesDB.mdf, откроется окно обозревателя серверов.

Примечание.

Окно обозревателя серверов называется окном обозревателя баз данных в случае Visual Web Developer.

Снимок экрана: окно

Рис. 03. Создание базы данных Microsoft SQL Server (щелкните, чтобы просмотреть изображение полного размера)

Затем необходимо создать новую таблицу базы данных. В окне обозревателя Sever щелкните правой кнопкой мыши папку "Таблицы" и выберите пункт меню "Добавить новую таблицу". При выборе этого параметра меню откроется конструктор таблиц базы данных. Создайте следующие столбцы базы данных:

Имя столбца Тип данных Разрешить значения NULL
Артикул Int False
Заголовок Nvarchar(100) False
Директор Nvarchar(100) False
DateReleased Дата/время False

Первый столбец, столбец "Идентификатор", имеет два специальных свойства. Сначала необходимо пометить столбец "Идентификатор" в качестве первичного ключевого столбца. После выбора столбца "Идентификатор" нажмите кнопку "Задать первичный ключ " (это значок, который выглядит как ключ). Во-вторых, необходимо пометить столбец Id как столбец Identity. В столбце окно свойств прокрутите вниз до раздела "Спецификация идентификации" и разверните его. Измените свойство Is Identity на значение Yes. По завершении таблица должна выглядеть как рис. 4.

Снимок экрана: Microsoft Visual Studio, на котором показана таблица базы данных

Рис. 04. Таблица базы данных "Фильмы" (щелкните, чтобы просмотреть изображение полного размера)

Последний шаг — сохранить новую таблицу. Нажмите кнопку "Сохранить" (значок floppy) и присвойте новой таблице имя "Фильмы".

После завершения создания таблицы добавьте в таблицу некоторые записи фильма. Щелкните правой кнопкой мыши таблицу "Фильмы" в окне обозревателя серверов и выберите пункт меню "Показать данные таблицы". Введите список любимых фильмов (см. рис. 5).

Снимок экрана: окно Microsoft Visual Studio, в котором показана таблица для ввода сведений о фильме, включая идентификатор, название, директор и дата выпуска.

Рис. 05. Ввод записей фильма (щелкните, чтобы просмотреть изображение полного размера)

Создание модели

Далее необходимо создать набор классов для представления базы данных. Нам нужно создать модель базы данных. Мы воспользуемся преимуществами Microsoft Entity Framework, чтобы автоматически создавать классы для модели базы данных.

Примечание.

Платформа MVC ASP.NET не привязана к Microsoft Entity Framework. Классы модели базы данных можно создать, используя различные средства реляционного сопоставления объектов (OR/M), включая LINQ to SQL, Subsonic и NHibernate.

Выполните следующие действия, чтобы запустить мастер модели данных сущности:

  1. Щелкните правой кнопкой мыши папку "Модели" в окне Обозреватель решений и выберите пункт меню "Добавить", "Создать элемент".
  2. Выберите категорию данных и выберите шаблон модели данных сущности ADO.NET.
  3. Присвойте модели данных имя MoviesDBModel.edmx и нажмите кнопку "Добавить ".

После нажатия кнопки "Добавить" откроется мастер модели данных сущности (см. рис. 6). Выполните следующие действия, чтобы завершить работу мастера:

  1. На шаге "Выбор содержимого модели" выберите параметр "Создать из базы данных ".
  2. На шаге выбора подключения к данным используйте подключение к данным MoviesDB.mdf и имя MoviesDBEntities для параметров подключения. Нажмите кнопку Далее.
  3. На шаге "Выбор объектов базы данных" разверните узел "Таблицы" и выберите таблицу "Фильмы". Введите пространство имен MovieApp.Models и нажмите кнопку "Готово ".

Снимок экрана: мастер модели данных сущности, на котором показан значок

Рис. 06. Создание модели базы данных с помощью мастера модели данных сущности (щелкните, чтобы просмотреть изображение полного размера)

После завершения работы мастера модели данных сущности откроется конструктор моделей данных сущностей. Конструктор должен отобразить таблицу базы данных "Фильмы" (см. рис. 7).

Снимок экрана: конструктор моделей данных сущностей, в котором показана таблица базы данных

Рис. 07. Конструктор моделей данных сущности (щелкните, чтобы просмотреть изображение полного размера)

Прежде чем продолжить, нам нужно внести одно изменение. Мастер данных сущностей создает класс модели с именем "Фильмы ", представляющий таблицу базы данных "Фильмы". Так как мы будем использовать класс "Фильмы" для представления определенного фильма, нам нужно изменить имя класса, чтобы быть "Фильм " вместо "Фильмы " (сингулярное, а не множественное число).

Дважды щелкните имя класса в области конструктора и измените имя класса из "Фильмы" на "Фильмы". После внесения этого изменения нажмите кнопку "Сохранить " (значок диска floppy), чтобы создать класс Movie.

Создание контроллера MVC ASP.NET

Следующим шагом является создание контроллера MVC ASP.NET. Контроллер отвечает за управление взаимодействием пользователя с приложением ASP.NET MVC.

Выполните следующие действия:

  1. В окне Обозреватель решений щелкните правой кнопкой мыши папку "Контроллеры" и выберите пункт меню "Добавить", "Контроллер".
  2. В диалоговом окне "Добавить контроллер" введите имя HomeController и установите флажок "Добавить методы действий" для сценариев создания, обновления и сведений (см. рис. 8).
  3. Нажмите кнопку "Добавить", чтобы добавить новый контроллер в проект.

После выполнения этих действий создается контроллер в списке 1. Обратите внимание, что он содержит методы с именем Index, Details, Create и Edit. В следующих разделах мы добавим необходимый код для работы этих методов.

Снимок экрана: поле

Рис. 08. Добавление нового контроллера MVC ASP.NET (щелкните, чтобы просмотреть изображение полного размера)

Описание 1 — контроллеры\HomeController.cs

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.Mvc;

using System.Web.Mvc.Ajax; 

namespace MovieApp.Controllers

{

    public class HomeController : Controller

    {

        //

        // GET: /Home/ 

        public ActionResult Index()

        {

            return View();

        } 

        //

        // GET: /Home/Details/5 

        public ActionResult Details(int id)

        {

            return View();

        } 

        //

        // GET: /Home/Create 

        public ActionResult Create()

        {

            return View();

        }  

        //

        // POST: /Home/Create 

        [AcceptVerbs(HttpVerbs.Post)]

        public ActionResult Create(FormCollection collection)

        {

            try

            {

                // TODO: Add insert logic here 

                return RedirectToAction("Index");

            }

            catch

            {

                return View();

            }

        } 

        //

        // GET: /Home/Edit/5

        public ActionResult Edit(int id)

        {

            return View();

        } 

        //

        // POST: /Home/Edit/5 

        [AcceptVerbs(HttpVerbs.Post)]

        public ActionResult Edit(int id, FormCollection collection)

        {

            try

            {

                // TODO: Add update logic here

                return RedirectToAction("Index");

            }

            catch

            {

                return View();

            }

        }

    }

}

Перечисление записей базы данных

Метод Index() контроллера Home — это метод по умолчанию для приложения ASP.NET MVC. При запуске приложения ASP.NET MVC метод Index() является первым вызываемым методом контроллера.

Мы будем использовать метод Index() для отображения списка записей из таблицы базы данных "Фильмы". Мы воспользуемся классами модели базы данных, созданными ранее, чтобы получить записи базы данных фильма с помощью метода Index().

Я изменил класс HomeController в листинге 2, чтобы он содержал новое частное поле с именем _db. Класс MoviesDBEntities представляет нашу модель базы данных, и мы будем использовать этот класс для взаимодействия с нашей базой данных.

Я также изменил метод Index() в листинге 2. Метод Index() использует класс MoviesDBEntities для получения всех записей фильмов из таблицы базы данных "Фильмы". Выражение _db. MovieSet.ToList() возвращает список всех записей фильмов из таблицы базы данных "Фильмы".

Список фильмов передается в представление. Все, что передается методу View(), передается представлению в виде данных представления.

Перечисление 2 — контроллеры/HomeController.cs (измененный метод Index)

using System.Linq;

using System.Web.Mvc;

using MovieApp.Models; 

namespace MovieApp.Controllers

{

    public class HomeController : Controller

    {

        private MoviesDBEntities _db = new MoviesDBEntities(); 

        public ActionResult Index()

        {

            return View(_db.MovieSet.ToList());

        }

    }

}

Метод Index() возвращает представление с именем Index. Для отображения списка записей базы данных фильма необходимо создать это представление. Выполните следующие действия:

Перед открытием диалогового окна "Добавить представление" перед открытием диалогового окна "Добавить представление" необходимо создать проект (выберите пункт меню "Сборка", "Сборка решения") или нет классов в раскрывающемся списке "Вид данных".

  1. Щелкните правой кнопкой мыши метод Index() в редакторе кода и выберите пункт меню "Добавить представление " (см. рис. 9).
  2. В диалоговом окне "Добавление представления" убедитесь, что установлен флажок "Создать строго типизированное представление ".
  3. В раскрывающемся списке "Просмотр содержимого" выберите список значений.
  4. В раскрывающемся списке "Просмотр класса данных" выберите значение MovieApp.Models.Movie.
  5. Нажмите кнопку "Добавить", чтобы создать новое представление (см. рис. 10).

После выполнения этих действий в папку Views\Home добавляется новое представление с именем Index.aspx. Содержимое представления индекса включается в список 3.

Снимок экрана редактора кода, в котором показан раскрывающийся список правой кнопкой мыши с выбранным параметром

Рис. 09. Добавление представления из действия контроллера (щелкните, чтобы просмотреть изображение полного размера)

Снимок экрана: поле

Рис. 10. Создание нового представления с помощью диалогового окна "Добавить представление" (щелкните, чтобы просмотреть изображение полного размера)

Описание 3. Представления\Главная\Index.aspx

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<MovieApp.Models.Movie>>" %> 

    <asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">

       Index

    </asp:Content> 

    <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 

        <h2>Index</h2> 

        <table>

            <tr>

                <th></th>

                <th>

                    Id

                </th>

                <th>

                    Title

                </th>

                <th>

                    Director

                </th>

                <th>

                    DateReleased

                </th>

            </tr> 

        <% foreach (var item in Model) { %>

            <tr>

                <td>

                    <%= Html.ActionLink("Edit", "Edit", new { id=item.Id }) %> |

                    <%= Html.ActionLink("Details", "Details", new { id=item.Id })%>

                </td>

                <td>

                    <%= Html.Encode(item.Id) %>

                </td>

                <td>

                    <%= Html.Encode(item.Title) %>

                </td>

                <td>

                    <%= Html.Encode(item.Director) %>

                </td>

                <td>

                    <%= Html.Encode(String.Format("{0:g}", item.DateReleased)) %>

                </td>

            </tr>

        <% } %> 

        </table> 

        <p>

            <%= Html.ActionLink("Create New", "Create") %>

        </p> 

    </asp:Content>

В представлении индекса отображаются все записи фильма из таблицы базы данных "Фильмы" в HTML-таблице. Представление содержит цикл foreach, который выполняет итерацию по каждому фильму, представленному свойством ViewData.Model. Если запустить приложение, нажав клавишу F5, вы увидите веб-страницу на рис. 11.

Снимок экрана: представление индекса, в котором показаны сведения о фильме, включая идентификатор, название, директор и дата выпуска.

Рис. 11. Представление индекса (щелкните, чтобы просмотреть изображение полного размера)

Создание записей базы данных

Представление индекса, созданное в предыдущем разделе, содержит ссылку для создания записей базы данных. Давайте вернемся к логике и создадим представление, необходимое для создания записей базы данных фильма.

Контроллер Home содержит два метода с именем Create(). Первый метод Create() не имеет параметров. Эта перегрузка метода Create() используется для отображения HTML-формы для создания новой записи базы данных фильма.

Второй метод Create() имеет параметр FormCollection. Эта перегрузка метода Create() вызывается, когда HTML-форма для создания нового фильма размещается на сервере. Обратите внимание, что этот второй метод Create() имеет атрибут AcceptVerbs, который предотвращает вызов метода, если операция HTTP POST не выполняется.

Этот второй метод Create() был изменен в обновленном классе HomeController в листинге 4. Новая версия метода Create() принимает параметр Movie и содержит логику вставки нового фильма в таблицу базы данных "Фильмы".

Примечание.

Обратите внимание на атрибут Bind. Так как мы не хотим обновлять свойство Movie Id из HTML-формы, необходимо явно исключить это свойство.

Перечисление 4 — Controllers\HomeController.cs (изменен метод Create)

//

// GET: /Home/Create 

public ActionResult Create()

{

    return View();

}  

//

// POST: /Home/Create 

[AcceptVerbs(HttpVerbs.Post)]

public ActionResult Create([Bind(Exclude="Id")] Movie movieToCreate)

{

     if (!ModelState.IsValid)

        return View(); 

    _db.AddToMovieSet(movieToCreate);

    _db.SaveChanges(); 

    return RedirectToAction("Index");

}

Visual Studio упрощает создание формы для создания новой записи базы данных фильма (см. рис. 12). Выполните следующие действия:

  1. Щелкните правой кнопкой мыши метод Create() в редакторе кода и выберите пункт меню "Добавить представление".
  2. Убедитесь, что установлен флажок "Создать строго типизированное представление ".
  3. В раскрывающемся списке "Просмотр содержимого" выберите значение Create.
  4. В раскрывающемся списке "Просмотр класса данных" выберите значение MovieApp.Models.Movie.
  5. Нажмите кнопку "Добавить", чтобы создать новое представление.

Снимок экрана: поле

Рис. 12. Добавление представления "Создать" (щелкните, чтобы просмотреть изображение полного размера)

Visual Studio автоматически создает представление в списке 5. Это представление содержит HTML-форму, содержащую поля, соответствующие каждому из свойств класса Movie.

Описание 5 . Представления\Главная\Create.aspx

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<MovieApp.Models.Movie>" %> 

    <asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">

       Create

    </asp:Content> 

    <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 

        <h2>Create</h2> 

        <%= Html.ValidationSummary("Create was unsuccessful. Please correct the errors and try again.") %> 

        <% using (Html.BeginForm()) {%> 

            <fieldset>

                <legend>Fields</legend>

                <p>

                    <label for="Id">Id:</label>

                    <%= Html.TextBox("Id") %>

                    <%= Html.ValidationMessage("Id", "*") %>

                </p>

                <p>

                    <label for="Title">Title:</label>

                    <%= Html.TextBox("Title") %>

                    <%= Html.ValidationMessage("Title", "*") %>

                </p>

                <p>

                    <label for="Director">Director:</label>

                    <%= Html.TextBox("Director") %>

                    <%= Html.ValidationMessage("Director", "*") %>

                </p>

                <p>

                    <label for="DateReleased">DateReleased:</label>

                    <%= Html.TextBox("DateReleased") %>

                    <%= Html.ValidationMessage("DateReleased", "*") %>

                </p>

                <p>

                    <input type="submit" value="Create" />

                </p>

            </fieldset> 

        <% } %> 

        <div>

            <%=Html.ActionLink("Back to List", "Index") %>

        </div> 

    </asp:Content>

Примечание.

Форма HTML, созданная диалоговым окном "Добавление представления", создает поле формы идентификатора. Так как столбец "Идентификатор" является столбцом удостоверений, это поле формы не требуется, и его можно безопасно удалить.

После добавления представления "Создание" в базу данных можно добавить новые записи фильма. Запустите приложение, нажав клавишу F5 и нажав ссылку "Создать", чтобы просмотреть форму на рис. 13. Если вы завершите и отправьте форму, создается новая запись базы данных фильма.

Обратите внимание, что вы автоматически получаете проверку формы. Если вы игнорируете ввод даты выпуска для фильма или вводите недопустимую дату выпуска, форма переигравируется и выделено поле даты выпуска.

Снимок экрана: страница

Рис. 13. Создание записи базы данных фильма (щелкните, чтобы просмотреть изображение полного размера)

Изменение существующих записей базы данных

В предыдущих разделах мы обсудили, как можно перечислить и создать новые записи базы данных. В этом заключительном разделе мы обсудим, как изменить существующие записи базы данных.

Сначала необходимо создать форму редактирования. Этот шаг прост, так как Visual Studio автоматически создаст форму редактирования для нас. Откройте класс HomeController.cs в редакторе кода Visual Studio и выполните следующие действия:

  1. Щелкните правой кнопкой мыши метод Edit() в редакторе кода и выберите пункт меню "Добавить представление " (см. рис. 14).
  2. Установите флажок "Создать строго типизированное представление".
  3. В раскрывающемся списке "Просмотр содержимого" выберите значение "Изменить".
  4. В раскрывающемся списке "Просмотр класса данных" выберите значение MovieApp.Models.Movie.
  5. Нажмите кнопку "Добавить", чтобы создать новое представление.

При выполнении этих действий в папку Views\Home добавляется новое представление с именем Edit.aspx. Это представление содержит HTML-форму для редактирования записи фильма.

Снимок экрана: поле

Рис. 14. Добавление представления "Изменить" (щелкните, чтобы просмотреть изображение полного размера)

Примечание.

Представление "Изменить" содержит поле формы HTML, соответствующее свойству "Идентификатор фильма". Так как вы не хотите, чтобы пользователи изменяли значение свойства Id, следует удалить это поле формы.

Наконец, необходимо изменить контроллер home, чтобы он поддерживал редактирование записи базы данных. Обновленный класс HomeController содержится в листинге 6.

Перечисление 6 — Controllers\HomeController.cs (изменить методы)

//

// GET: /Home/Edit/5 

public ActionResult Edit(int id)

{

    var movieToEdit = (from m in _db.MovieSet

                       where m.Id == id

                       select m).First(); 

    return View(movieToEdit);

} 

//

// POST: /Home/Edit/5 

[AcceptVerbs(HttpVerbs.Post)]

public ActionResult Edit(Movie movieToEdit)

{ 

    var originalMovie = (from m in _db.MovieSet

                         where m.Id == movieToEdit.Id

                         select m).First(); 

    if (!ModelState.IsValid)

        return View(originalMovie);

        _db.ApplyPropertyChanges(originalMovie.EntityKey.EntitySetName, movieToEdit);

        _db.SaveChanges(); 

        return RedirectToAction("Index");

}

В листинге 6 я добавил дополнительную логику для обоих перегрузок метода Edit(). Первый метод Edit() возвращает запись базы данных фильма, соответствующую параметру Id, переданного методу. Вторая перегрузка выполняет обновления записи фильма в базе данных.

Обратите внимание, что необходимо получить исходный фильм, а затем вызвать ApplyPropertyChanges(), чтобы обновить существующий фильм в базе данных.

Итоги

Цель этого руководства — дать вам представление о создании приложения ASP.NET MVC. Я надеюсь, что вы обнаружили, что создание веб-приложения ASP.NET MVC очень похоже на опыт создания страниц Active Server или приложения ASP.NET.

В этом руководстве мы изучили только самые основные функции платформы ASP.NET MVC. В будущих руководствах мы подробно рассмотрим такие разделы, как контроллеры, действия контроллера, представления, просмотр данных и вспомогательных элементов HTML.