我有一个项目,其中声明了一个设置区域,并且只要我明确包含“/ Index”操作,该URL就会起作用。问题是当我使用RedirectToAction(“Index”)时,它从URL中排除了“/ Index”,我得到了404 Page Not Found。网址是:
http://localhost:40078/Setup/Facility/Index
- 作品
http://localhost:40078/Setup/Facility/
- 404(有或没有尾随/)
RouteConfig:
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapMvcAttributeRoutes();
AreaRegistration.RegisterAllAreas();
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
namespaces: new[] { "T.C.MVCWeb.Controllers" }
);
}
SetupAreaRegistration:
public class SetupAreaRegistration : AreaRegistration
{
public override string AreaName
{
get
{
return "Setup";
}
}
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Setup_default",
"Setup/{controller}/{action}/{id}",
defaults: new { action = "Index", id = UrlParameter.Optional },
namespaces: new[] { "T.C.MVCWeb.Areas.Setup.Controllers" }
);
}
}
请求控制器
namespace T.C.MVCWeb.Areas.Setup.Controllers
{
public class FacilityController : Controller
{
// GET: FacilitySetup
public ActionResult Index()
{
...
}
}
}
我添加了Phil Haack的RouteDebugger并且可以看到404请求认为“设置”是控制器,但是我不明白为什么,输出的其余部分让我感到困惑而不是它的帮助。
答案 0 :(得分:0)
感谢NightOwn888的评论,我找到了一个通过属性声明的路线。违规路由属性声明为Setup / {action},旨在允许区域URL本身http://localhost:40078/Setup/映射到SetupController。