У меня есть небольшая часть приложения MVC 3 для демонстрации. У меня есть одна область, и это работает нормально.
Я только что добавил еще одну область, ожидая, что просто подниму приложение, и он будет работать, но нет, 404 - Ресурс не найден.
Маршрут карты в AreaRegistration по умолчанию (как и первая область, которую я создал).
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Postcard_default",
"Postcard/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
);
}
Я попытался добавить в него определенный контроллер, но ничего.
Итак, я скачал Phil Haack RouteDebugger, и мой маршрут найден при вводе http://server/Postcard/Create (который я также пытаюсь получить)
Структура области
Мой контроллер
public class CreateController : Controller
{
private ILogger Logger { get; set; }
private ICardSender Emailer { get; set; }
private IOCCardRepository CardRepository { get; set; }
public CreateController(ILogger logger, ICardSender cardSender, IOCCardRepository repository)
{
this.Logger = logger;
this.Emailer = cardSender;
this.CardRepository = repository;
}
//
// GET: /Postcard/Create/
public ActionResult Index()
{
var model = new OCPostcardModel().Create();
return View(model);
}
СЕЙЧАС: С тех пор я удалил всю область, попробовал еще раз, но это не сработало. Поэтому я добавил в конкретный контроллер на маршруте (Inside AreaRegistration file)
context.MapRoute(
"Postcard_default",
"Postcard/{controller}/{action}/{id}",
new { controller = "Create", action = "Index", id = UrlParameter.Optional }
);
И его работа... Я не знаю, почему это не сработало, когда я делал это раньше, но это сейчас.
По-прежнему любопытно, хотя я не видел, чтобы кто-нибудь добавлял в этот контроллер в маршрут в любом из демо, на которое я смотрел, - и у меня его нет в другой области?