ユーザーが次のような独自の引数を送信したときに、URL にデフォルトのパラメーターを設定したいと思います。
その引数は (見えないように) 最初に SomeController/SomeAction/ID=argument にルーティングされ、見つからない場合は 404 または 301 にルーティングされます。
global.asax RegisterRoutes にこの機能があることを願っています。どんな助けでも大歓迎です。
ユーザーが次のような独自の引数を送信したときに、URL にデフォルトのパラメーターを設定したいと思います。
その引数は (見えないように) 最初に SomeController/SomeAction/ID=argument にルーティングされ、見つからない場合は 404 または 301 にルーティングされます。
global.asax RegisterRoutes にこの機能があることを願っています。どんな助けでも大歓迎です。
これを行うためのルートを設定できますが、MVC の「一般的な」設定方法に干渉します。
routes.MapRoute(
name: "ControllerlessRoute",
url: "{id}",
defaults: new { controller = "SomeController", action = "SomeAction" }
);
"/argument" をアクションにルーティングし、必要に応じて興味深いビューまたは 404/301/302 の結果を返します。
routes.MapRoute(
name: "ControllerlessRoute",
url: "{id}",
defaults: new { controller = "SomeController", action = "SomeAction" }
);
class SomeController{
ActionResult SomeAction(id)
{
if (NotFound)
{
return Custom404View();
}
else if (NeedRedirect)
{
return new Custom301View{Url:RedrectUrl};
}
return View();
}
}
カスタム 301 ビューのサンプルはhttp://forums.asp.net/p/1337938/2700733.aspxにあります。
public string Url { get; set; }
public override void ExecuteResult(ControllerContext context)
{
context.HttpContext.Response.StatusCode = 301;
context.HttpContext.Response.RedirectLocation = Url;
context.HttpContext.Response.End();
}