我在使用 MVC 4 时遇到了问题,我想这确实是一件微不足道的事情,但它在最后一天一直困扰着我,我似乎无法弄清楚。
我有这个网址:
http://www.example.com/my-dashed-url
我有一个名为:
public class MyDashedUrlController: Controller
{
}
我只有两条这样的路线:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute("my-dashed-url",
"my-dashed-url/{action}",
new { controller = "MyDashedUrl", action = "Index" });
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home",
action = "Index",
id = UrlParameter.Optional }
);
我得到索引就好了。但是,当我这样做时:
public ActionResult Index()
{
if (NoUserIsLoggedOn)
return RedirectToAction("Logon", "MyDashedUrl");
return View();
}
public ActionResult Logon()
{
Contact c = GetContact();
return View(c);
}
它没有正确地将我重定向到“登录”操作。它应该将我重定向到:
http://www.example.com/my-dashed-url/logon
但相反,它试图将我重定向到:
http://www.example.com/logon
...这不起作用(404 Not Found)
我错过了一些东西。谁能发现它?如果有人需要更多信息,请告诉我。
在这个控制器中,每个 RedirectToAction 都做同样的事情。A Html.BeginForm("Logon", "MyDashedUrl") 也会生成: http ://www.example.com/logon
我想这与我定义的路线有关,但我找不到有问题的路线,因为它们都是一样的。如果我禁用除了 MVC 的默认路由之外的所有路由,问题仍然存在