路由后RedirectToAction忽略Area

| 我有一个名为\'Subscribers \'的区域,在该区域中有一个名为'SubscriptionsController \'的控制器,它具有两个公共操作方法:Index()和Unsubscribe(),其中Unsubscribe()方法传递了一个订户ID,即Unsubscribe(int ID) 在某些情况下(例如,id无效),Unsubscribe()方法对同一控制器上的其他操作执行RedirectToAction(\“ Index \”)。
public ActionResult Index()
{
    return View();
}
如果我通过\'/ Subscribers / Subscriptions / Unsubscribe / 999 \'访问页面,则RedirectToActionMethod()会将我正确地重定向到Index()操作。 我希望能够\“快捷方式\”正式URL(\'/ Subscribers / Subscriptions / Unsubscribe / 999 \'),所以我向Global.ascx文件添加了一条路由:
routes.MapRoute(
    \"Unsubscribe\",
    \"Unsubscribe/{id}\",
    new {area = \"Subscribers\", controller = \"Subscriptions\", action = \"Unsubscribe\"}
);
由于该路由按预期运行Unsubscribe()方法,因此似乎可以正常工作。我遇到的问题是,在Unsubscribe()中调用RedirectToAction(\“ Index \”)现在失败了,因为它们仍然调用正确的操作(Index()),视图引擎现在忽略了Area并尝试加载视图相对于网站根目录\'〜/ Views / Subscriptions / Index.aspx \'而不是\'〜/ Areas / Subscribers / Views / Subscriptions / Index.aspx \' 我可以通过在Unsubscribe()方法中修改RedirectToAction()方法来解决此问题:
return RedirectToAction(\"Index\", \"Subscriptions\", new { Area = \"Subscribers\" });
但这似乎是一个麻烦且不太灵活的解决方案。 任何建议或解释将不胜感激。 谢谢。     
已邀请:
        我想我已经解决了问题。 路由需要进入Area的RegisterArea方法:
public override void RegisterArea(AreaRegistrationContext context)
{
    context.MapRoute(
        \"Subscribers_unsubscribe\",
        \"Unsubscribe/{id}\",
        new { controller = \"Subscriptions\", action = \"Unsubscribe\", id = UrlParameter.Optional }
    );

    context.MapRoute(
        \"Subscribers_default\",
        \"Subscribers/{controller}/{action}/{id}\",
        new { controller = \"Home\", action = \"Index\", id = UrlParameter.Optional }
    );
}
    

要回复问题请先登录注册