1

ユーザーが次のような独自の引数を送信したときに、URL にデフォルトのパラメーターを設定したいと思います。

http://mysite.com/引数

その引数は (見えないように) 最初に SomeController/SomeAction/ID=argument にルーティングされ、見つからない場合は 404 または 301 にルーティングされます。

global.asax RegisterRoutes にこの機能があることを願っています。どんな助けでも大歓迎です。

4

2 に答える 2

3

これを行うためのルートを設定できますが、MVC の「一般的な」設定方法に干渉します。

routes.MapRoute(
    name: "ControllerlessRoute",
    url: "{id}",
    defaults: new { controller = "SomeController", action = "SomeAction" }
);
于 2012-10-29T20:35:25.100 に答える
2

"/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();
}
于 2012-10-29T20:42:46.583 に答える