Главная страница   /   22.1. Подготовка проекта для примера (ASP.NET MVC 4

ASP.NET MVC 4

ASP.NET MVC 4

Адам Фриман

22.1. Подготовка проекта для примера

Для этой главы мы создали в 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;}