【发布时间】:2011-05-28 20:40:49
【问题描述】:
我有一个小型 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);
}
现在:我已经删除了整个区域,再次尝试它没有工作。所以我在路由中添加了具体的控制器(在AreaRegistration文件里面)
context.MapRoute(
"Postcard_default",
"Postcard/{controller}/{action}/{id}",
new { controller = "Create", action = "Index", id = UrlParameter.Optional }
);
它的工作......我不知道为什么我以前这样做时它不起作用,但现在它是。
尽管我还没有看到任何人在我看过的任何演示中将此控制器添加到路由中,但我仍然很好奇 - 而且我在其他区域中没有它?
【问题讨论】:
-
值得添加 - 这是作为 MVC Preview 1 应用程序开始的,我已经通过平台安装程序安装了 MVC Preview 2
-
还有 1 个!我在我的 Postcard AreaRegistration 中的 RegisterArea 方法上设置了一个断点——它被命中了。我还在Controller(和Index Action)的构造函数上设置了一个断点,都没有命中?
-
请提供更多信息。你的控制器是什么样子的?
标签: asp.net-mvc model-view-controller routing http-status-code-404 asp.net-mvc-3