路由后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\" });
但这似乎是一个麻烦且不太灵活的解决方案。
任何建议或解释将不胜感激。
谢谢。
没有找到相关结果
已邀请:
1 个回复
鲁釜头