ASP.NET MVC 4

ASP.NET MVC 4

Адам Фриман

Создание проекта для примера

Для этой главы мы создадим новый проект MVC под названием ControllerExtensibility на шаблоне Empty. Для работы нам потребуются несколько простых контроллеров, чтобы продемонстрировать различные возможности расширения. Для начала определим класс Result.cs в папке Models, содержимое которого показано в листинге 17-1.

Листинг 17-1: Объект модели Result
namespace ControllerExtensibility.Models 
{
	public class Result {
		public string ControllerName { get; set; }
		public string ActionName { get; set; }
	}
}

Далее мы создадим папку /Views/Shared и добавим новое представление под названием Result.cshtml. Это представление, которое будут визуализировать все методы действий в наших классах контроллерах, его содержимое показано в листинге 17-2.

Листинг 17-2: Содержимое файла Result.cshtml
@model ControllerExtensibility.Models.Result

@{
	Layout = null;
}

<!DOCTYPE html>
<html>
<head>
	<meta name="viewport" content="width=device-width" />
	<title>Result</title>
</head>
<body>
	<div>Controller: @Model.ControllerName</div>
	<div>Action: @Model.ActionName</div>
</body>
</html>

Это представление использует класс Result, который мы определили в листинге 17-1, в качестве модели и просто отображает значения свойств ControllerName и ActionName. Наконец, нам нужно создать несколько базовых контроллеров.

В листинге 17-3 показан контроллер Product.

Листинг 17-3: Контроллер Product
using ControllerExtensibility.Models;
using System.Web.Mvc;

namespace ControllerExtensibility.Controllers
{
	public class ProductController : Controller
	{
		public ViewResult Index()
		{
			return View("Result", new Result
			{
				ControllerName = "Product",
				ActionName = "Index"
			});
		}

		public ViewResult List()
		{
			return View("Result", new Result
			{
				ControllerName = "Product",
				ActionName = "List"
			});
		}
	}
}

В листинге 17-4 показан контроллер Customer.

Листинг 17-4: Контроллер Customer
using ControllerExtensibility.Models;
using System.Web.Mvc;

namespace ControllerExtensibility.Controllers
{
	public class CustomerController : Controller
	{
		public ViewResult Index()
		{
			return View("Result", new Result
			{
				ControllerName = "Customer",
				ActionName = "Index"
			});
		}

		public ViewResult List()
		{
			return View("Result", new Result
			{
				ControllerName = "Customer",
				ActionName = "List"
			});
		}
	}
}

Наши контроллеры сообщают представлению Result.cshtml, что было вызвано, – больше ничего полезного они не делают. В этой главе нам больше ничего и не нужно, так как здесь мы учимся изменять способы обработки контроллеров и действий.

или RSS канал: Что новенького на smarly.net