私のURLを設定しようとしていますhttp://localhost/PDM/Welcome/FloridaRouteDataの値が常に空白なのはなぜですか?
ここで、PDMは仮想ディレクトリ、Welcomeはホームページです。 フロリダは引数が渡されます。
フロリダが通過するのを見ることができないことを除いて、URLが機能しているようです。
*更新*
何のコントローラはありません。 Visual Studioの例...
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { action = "Index", id= UrlParameter.Optional }
);
... defaultsオブジェクトにコントローラが指定されていませんでした。私は彼らが持っていたものを使い、少し変えました。デフォルトのページをIndexの代わりにIndex and DivisionのWelcome instendに置き換えました。部門は常にURLにあるので、IDよりも優れているようです。
私は以下を試しました。
public static class RouteConfig {
public static void RegisterRoutes(RouteCollection routes){
var settings = new FriendlyUrlSettings();
settings.AutoRedirectMode = RedirectMode.Permanent;
routes.EnableFriendlyUrls(settings);
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{division}",
defaults: new { action = "Welcome", division = UrlParameter.Optional }
);
}
}
2 //そして多くの他の多くの方法
// this statement would be a lie there is not controller pdm is the root
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{division}",
defaults: new { controller="PDM" action = "Welcome", division = UrlParameter.Optional }
);
// the ideal way
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{division}",
defaults: new { action = "Welcome", division = "Florida" }
);
// and many more not listed
私はこれらの行は行くべき
protected override void OnPreRender(EventArgs e) {
base.OnPreRender(e);
RouteData rd = RouteTable.Routes.GetRouteData(new HttpContextWrapper(HttpContext.Current));
if(rd != null){
int i = rd.values.Count;
}
}
コンパイルできますか? 'int i = rd.values'では' RouteValueDictionary'を 'int'に代入しています。 –
はいそのコンパイル。この例では、if rd!= nullが追加されました。私はvalues.countに更新しました。ありがとう – Mike
'HttpContext.Current.Request.RequestContext.RouteData'を使うとどうなりますか? –