MVC 4の経路すべてを作成しようとすると(何かの例が見つかり、コードに基づいている)、404エラーが返されます。私はIIS 7.5でこれを実行しています。これはまっすぐな解決策のようですが、何が欠けていますか?MVC 4すべての経路が決して到達しない
「デフォルト」ルートの上にある「CatchAll」ルートを移動すると、1つのメモが機能します。しかし、当然のことながら、他のコントローラのどれにも到達していません。ここで
はコードです:
Route.Config:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
"CatchAll",
"{*dynamicRoute}",
new { controller = "CatchAll", action = "ChoosePage" }
);
コントローラー:
public class CatchAllController : Controller
{
public ActionResult ChoosePage(string dynamicRoute)
{
ViewBag.Path = dynamicRoute;
return View();
}
}
これはうまくいきます。これを行うと、foreachとsubstringを避けることができます: 'var dynamicRoute = string.Join("/"、requestContext.RouteData.Values.Values);' –
良いコールNathan。私はこのコードを見てからしばらくしていました。私はいつも古いコードを改善する方法を見つける。これは確かにその時代の一つです。私はあなたの提案で答えを更新しました。ありがとう! – gsxrboy73
これは素晴らしいことですが、私がここに来るたびに何かを学びます。このコードは素晴らしく、ベースコントローラーでこれを処理したいのかどうかを判断しようとしていましたが、コントローラーファクトリーにプッシュする方が良いアイデアです! –