Asp.net-Mvc

MVC 3 - 新區域 - 404 錯誤 - 找不到資源 - 已嘗試路由調試器

  • August 14, 2017

我有一個小型 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 }
       );

它的工作……我不知道為什麼我以前這樣做時它沒有工作,但現在是。

仍然很好奇,因為我還沒有看到任何人在我看過的任何展示中將此控制器添加到路由中 - 而且我在其他區域沒有得到它?

當我將控制器移動到區域但忘記更新命名空間時,我遇到了這個問題。控制器名稱的範圍是區域的命名空間。所以“Area”中的“Some”將映射到 App.Areas.Area.Controllers.SomeController,它並不存在。

您在 maproute 中缺少控制器部分

引用自:https://stackoverflow.com/questions/4500165