ASP.NET MVC 4

ASP.NET MVC 4

Адам Фриман

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

Для демонстрации системы маршрутизации нам нужен проект, к которому мы можем добавить роуты. Мы создали новое MVC приложение, используя шаблон Basic, и назвали проект UrlsAndRoutes.

Совет

Мы включили в эту главу различные модульные тесты, и если вы хотите воссоздать их, то вам нужно будет выбрать опцию Create a unit test project, когда вы выбираете шаблон Basic, и использовать NuGet, чтобы добавить Moq в проект юнит тестирования.

Для демонстрации роутов мы собираемся добавить некоторые простые контроллеры в приложение. В этой главе мы хотим только показать способ, которым интерпретируются URL, чтобы вызвать методы действия, поэтому используемые модели представления являются строковыми значениями во ViewBag, который сообщает имена контроллера и метода действия. Во-первых, создайте контроллер Home и установите его содержание, чтобы оно совпадало с тем, что в листинге 13-1.

Листинг 13-1: Содержание контроллера Home
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace UrlsAndRoutes.Controllers
{
	public class HomeController : Controller
	{
		public ActionResult Index()
		{
			ViewBag.Controller = "Home";
			ViewBag.Action = "Index";
			return View("ActionName");
		}
	}
}

Создайте контроллер Customer и с содержанием, как в листинге 13-2.

Листинг 13-2: Содержание контроллера Customer
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace UrlsAndRoutes.Controllers
{
	public class CustomerController : Controller
	{
		public ActionResult Index()
		{
			ViewBag.Controller = "Customer";
			ViewBag.Action = "Index";
			return View("ActionName");
		}
		public ActionResult List()
		{
			ViewBag.Controller = "Customer";
			ViewBag.Action = "List";
			return View("ActionName");
		}
	}
}

Создайте второй контроллер Admin, как в листинге 13-3.

Листинг 13-3: Содержание контроллера Admin
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace UrlsAndRoutes.Controllers
{
	public class AdminController : Controller
	{
		public ActionResult Index()
		{
			ViewBag.Controller = "Admin";
			ViewBag.Action = "Index";
			return View("ActionName");
		}
	}
}

Мы определили представление ActionName во всех методах действия этих контроллеров, что позволяет нам определить одно представление и использовать его во всем приложении. Добавьте новое представление с именем ActionName.cshtml в папку /Views/Shared и установите его содержание, чтобы оно соответствовало тому, что показано в листинге 13-4.

Листинг 13-4: Содержание представления ActionName.cshtml
@{
	Layout = null;
}
<!DOCTYPE html>
<html>
<head>
	<meta name="viewport" content="width=device-width" />
	<title>ActionName</title>
</head>
<body>
	<div>The controller is: @ViewBag.Controller</div>
	<div>The action is: @ViewBag.Action</div>
</body>
</html>

Если вы запустите приложение, вы увидите содержимое, как на рисунке 13-1.

Рисунок 13-1: Запуск приложения
или RSS канал: Что новенького на smarly.net