2017-04-06 18 views
0

私の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; 
     } 

    } 
+0

コンパイルできますか? 'int i = rd.values'では' RouteValueDictionary'を 'int'に代入しています。 –

+0

はいそのコンパイル。この例では、if rd!= nullが追加されました。私はvalues.countに更新しました。ありがとう – Mike

+0

'HttpContext.Current.Request.RequestContext.RouteData'を使うとどうなりますか? –

答えて

-1

のPreRenderセクションで私のmasterpage.master上で引数を引くしようとしています最後に、の後にすべてMapRouteが呼び出されます:

前に実行すると、Page.RouteData.Valuesは空になります。

関連する問題