ルートからすぐにクエリ文字列を実行したい場合は、この方法でルートをグローバルにマップする必要があります。アクション内でコンテキストにアクセスし、そこからクエリ文字列を取得できます。以下は、Twitter スタイルのユーザー名を使用する私の例ですが、考え方は同じです。
routes.MapRoute("UserSettings",
"{username}/settings",
new { controller = "Home", action = "Settings", username = "" },
new { username = new NotNullOrEmptyConstraint() }
);
public class NotNullOrEmptyConstraint : IRouteConstraint {
public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
{
try
{
return !String.IsNullOrEmpty(values["username"].ToString());
}
catch (Exception)
{
return false;
}
}
}
public ActionResult Settings(string username){
}