2017-09-27 1 views
0

asp vb.netアプリケーションでルーティングを有効にしようとしています。 RouteConfig.vbでvb.netでPage.RouteData.Valuesを取得できません

1)のGlobal.asaxにおいて、このコード

<%@ Application Language="VB" %> 
<%@ Import Namespace="System.Web.Optimization" %> 
<%@ Import Namespace="System.Web.Routing" %> 

<script runat="server"> 

    Sub Application_Start(sender As Object, e As EventArgs) 
     RouteConfig.RegisterRoutes(RouteTable.Routes) 
     BundleConfig.RegisterBundles(BundleTable.Bundles) 
    End Sub 
</script> 

2がある)私はこの有する:

私は次のステップに従っ

Imports System.Web 
Imports System.Web.Routing 
Imports Microsoft.AspNet.FriendlyUrls 

Public Module RouteConfig 

    Public Sub RegisterRoutes(routes As RouteCollection) 
     Dim settings = New FriendlyUrlSettings() 
     settings.AutoRedirectMode = RedirectMode.Permanent 
     routes.EnableFriendlyUrls(settings) 
     routes.MapPageRoute("Services", 
      "Services/{SID}", 
      "~/Services.aspx") 
    End Sub 

End Module 

を3)services.aspxページで、私はこれを書いた

インポートSystem.Web.Routing私は、ページを実行すると0部分クラスのサービスは 継承System.Web.UI.Page

Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load 
    If Not Me.IsPostBack Then 
     lblTest.Text = RouteData.Values("SID").ToString 
    End If 
End Sub 

エンドクラス

、私はエラーメッセージ

を得る「いいえオブジェクト参照がオブジェクトに指定されていませんインスタンス。

私はライン "lblTest.Text = RouteData.Values(" SID ")を削除した場合。ToStringメソッド" の悪い英語のため申し訳ありませんがSIDパラメータ

なしもちろん、それが働いています、。

答えて

0

がメッセージ共通の「オブジェクトのインスタンスに設定されていないオブジェクト参照」以外NullReferenceExceptionを示すために別の表現として知ら「いいえオブジェクト参照がオブジェクトインスタンスで指定されていません」。あなたはこの行を言及しているので:

lblTest.Text = RouteData.Values("SID").ToString 

RouteData.Values("SID")Nothingが含まれている場合に例外が発生し、ToStringは、そのソース文字列としてNothingセットで動作することはできません。 RouteData.ValuesRouteData.Values.ContainsKeyを使用してNothingを持っているかどうかをチェックすることができます:

If (Page.RouteData.Values.ContainsKey("SID")) Then 
    lblTest.Text = RouteData.Values("SID").ToString 
End If 

あなたはFriendlyUrlsMapPageRouteを使用しているので、私はあなたがNothingとして渡さ防止、物理的なASPXファイル名よりも、別の別の名前に2つ目の引数にURLの名前を変更する必要があると思いますURL引数:EnableFriendlyUrlsMapPageRoute後に実行されるように

' note 's' omitted in Service/{SID} route 
routes.MapPageRoute("Services", "Service/{SID}", "~/Services.aspx") 

その後、あなたはRegisterRoutes内のステートメントの順序を変更してみてくださいすることができます

Public Module RouteConfig 

    Public Sub RegisterRoutes(routes As RouteCollection) 
     routes.MapPageRoute("Services", "Service/{SID}", "~/Services.aspx") 

     Dim settings = New FriendlyUrlSettings() 
     settings.AutoRedirectMode = RedirectMode.Permanent 
     routes.EnableFriendlyUrls(settings) 
    End Sub 

End Module 

同様の問題:

FriendlyURLs - RouteData returns no value

Page.RouteData.Values are empty for one page but not another

関連する問題