我有一个名为'Subscribers'的区域和一个名为'SubscriptionsController'的控制器,它有两个公共操作方法:Index()和Unsubscribe(),其中Unsubscribe()方法传递订阅者ID即取消订阅(int id)RedirectToAction在路由后忽略区域
在某些情况下(例如id无效),Unsubscribe()方法对同一控制器上的其他操作执行RedirectToAction(“Index”)。
public ActionResult Index()
{
return View();
}
如果我通过 '/订户/订阅/取消/ 999' 访问该页面的RedirectToActionMethod()正确重定向我到Index()动作。
我希望能够到“快捷方式”正式URL(“/订户/订阅/取消/ 999”),所以我加入Global.ascx文件的路径:
routes.MapRoute(
"Unsubscribe",
"Unsubscribe/{id}",
new {area = "Subscribers", controller = "Subscriptions", action = "Unsubscribe"}
);
出现这条路线正如预期的那样运行Unsubscribe()方法时正常工作。我遇到的问题是在Unsubscribe()中对RedirectToAction(“Index”)的调用现在失败,因为它们仍然调用正确的操作(Index()),视图引擎现在忽略该区域并尝试加载视图网站的根目录'〜/ Views/Subscriptions/Index.aspx'而不是'〜/ Areas/Subscribers/Views/Subscriptions/Index.aspx'
我可以通过修改RedirectToAction Unsubscribe()方法如下:
return RedirectToAction("Index", "Subscriptions", new { Area = "Subscribers" });
但是这看起来像一个麻烦而不是非常灵活的解决方案的问题。
任何意见或解释将不胜感激。
谢谢。