私は MVC 4 で問題を抱えています。それは本当に些細なことだと思いますが、最後の日まで私を悩ませていて、理解できないようです。
私はこのURLを持っています:
http://www.example.com/my-dashed-url
次の名前のコントローラーがあります。
public class MyDashedUrlController: Controller
{
}
次のようなルートは 2 つしかありません。
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 です。Html.BeginForm("Logon", "MyDashedUrl") も生成します: http://www.example.com/logon
私が定義したルートで何かをしなければならないと思いますが、それらはすべて同じであるため、問題のあるルートを見つけることができません。MVC からのデフォルトのルート以外のすべてのルートを無効にしても、問題は同じままです