2017-09-27 1 views
0

Ich versuche, das Routing auf einer Asp vb.net-Anwendung zu aktivieren.Abruf von Page.RouteData.Values ​​in vb.net

folgte ich die nächsten Schritte:

1) In global.asax, gibt dieser Code

<%@ 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) Im RouteConfig.vb i dies haben ist:

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) In der services.aspx Seite schrieb ich diese

Importe System.Web.Routing Partial Class Services Erben 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 

End Class

Wenn ich die Seite auszuführen, erhalte ich die Fehlermeldung

„No Objektreferenz in einem Objekt angegeben wird Beispiel."

Wenn ich die Zeile löschen "lblTest.Text = RouteData.Values ​​(" SID "). ToString" es natürlich ohne den SID Parameter

Sorry für schlechtes Englisch funktioniert.

Antwort

0

als eine andere Formulierung NullReferenceException, um anzuzeigen, neben gemeinsamen „Objektverweis nicht auf eine Instanz eines Objekts gesetzt“ bekannt „No Objektverweis wird in einer Objektinstanz festgelegt“ -Meldung. Da Sie diese Zeile sind zu erwähnen:

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

Die Ausnahme tritt auf, wenn RouteData.Values("SID")Nothing enthält, und ToString kann nicht mit Nothing Satz als Quelle String arbeiten. Sie können prüfen, ob RouteData.ValuesNothing mit RouteData.Values.ContainsKey hat:

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

Da Sie MapPageRoute mit FriendlyUrls verwenden, ich glaube, Sie URL an einen anderen anderen Namen als physische ASPX Dateinamen im zweiten Argument umbenennen müssen, verhindert Nothing geben als URL-Argument:

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

Dann können Sie versuchen, Anweisungen in RegisterRoutes Nachbestellung so dass EnableFriendlyUrls nach MapPageRoute ausgeführt:

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 

ähnliche Probleme:

FriendlyURLs - RouteData returns no value

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