我有一个小型 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://服务器/明信片/创建 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);
}
现在:我已经删除了整个区域,再次尝试它不起作用。所以我在路线中添加了特定控制器(在 AreaRegistration 文件内)
context.MapRoute(
"Postcard_default",
"Postcard/{controller}/{action}/{id}",
new { controller = "Create", action = "Index", id = UrlParameter.Optional }
);
它的工作...我不知道为什么当我以前这样做时它不起作用,但现在可以了。
但仍然很好奇,因为我在我看过的任何演示中都没有看到任何人将此控制器添加到路线中 - 而且我在其他区域中还没有得到它?