ASP.NET MVC 4
Адам Фриман
Подготовка проекта для примера
Для этой главы мы создали в Visual Studio новый проект MVC под названием MvcModels
на шаблоне Basic
. Мы будем использовать тот же класс модели, что и в предыдущих главах, поэтому создайте новый файл под названием Person.cs
в папке Models
и приведите его содержимое в соответствие с листингом 22-1.
Листинг 22-1: Файл /Models/Person.cs
using System;
namespace MvcModels.Models
{
public class Person
{
public int PersonId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime BirthDate { get; set; }
public Address HomeAddress { get; set; }
public bool IsApproved { get; set; }
public Role Role { get; set; }
}
public class Address
{
public string Line1 { get; set; }
public string Line2 { get; set; }
public string City { get; set; }
public string PostalCode { get; set; }
public string Country { get; set; }
}
public enum Role
{
Admin,
User,
Guest
}
}
Мы также создали контроллер Home
, как показано в листинге 22-2. В этом контроллере определено для примера несколько объектов Person
, а также действие Index
, которое позволяет выбрать один объект Person
по значению свойства PersonId
.
Листинг 22-2: Контроллер Home
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MvcModels.Models;
namespace MvcModels.Controllers
{
public class HomeController : Controller
{
private Person[] personData =
{
new Person
{
PersonId = 1,
FirstName = "Adam",
LastName = "Freeman",
Role = Role.Admin
},
new Person
{
PersonId = 2,
FirstName = "Steven",
LastName = "Sanderson",
Role = Role.Admin
},
new Person
{
PersonId = 3,
FirstName = "Jacqui",
LastName = "Griffyth",
Role = Role.User
},
new Person
{
PersonId = 4,
FirstName = "John",
LastName = "Smith",
Role = Role.User
},
new Person
{
PersonId = 5,
FirstName = "Anne",
LastName = "Jones",
Role = Role.Guest
}
};
public ActionResult Index(int id)
{
Person dataItem = personData.Where(p => p.PersonId == id).First();
return View(dataItem);
}
}
}
Для этого метода действия мы создали файл представления под названием /Views/Home/Index.cshtml
. Содержимое этого файла показано в листинге 22-3. Мы использовали шаблонный вспомогательный метод DisplayFor
, чтобы отображать значения некоторых свойств модели представления Person
.
Листинг 22-3: Файл /Views/Home/Index.cshtml
@model MvcModels.Models.Person
@{
ViewBag.Title = "Index";
}
<h2>Person</h2>
<div><label>ID:</label>@Html.DisplayFor(m => m.PersonId)</div>
<div><label>First Name:</label>@Html.DisplayFor(m => m.FirstName)</div>
<div><label>Last Name:</label>@Html.DisplayFor(m => m.LastName)</div>
<div><label>Role:</label>@Html.DisplayFor(m => m.Role)</div>
Наконец, мы добавили стили CSS в файл /Content/Site.css
, как показано в листинге 22-4.
Листинг 22-4: Дополнительные стили в файле Site.css
label { display: inline-block; width: 100px; font-weight:bold; margin: 5px;}
form label { float: left;}
input.text-box { float: left; margin: 5px;}
button[type=submit] { margin-top: 5px; float: left; clear: left;}
form div {clear: both;}