2017-09-27 4 views
0

J'essaie d'activer le routage sur une application asp vb.net.Impossible d'extraire Page.RouteData.Values ​​dans vb.net

J'ai suivi les étapes suivantes:

1) En global.asax, il y a ce 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) Dans le RouteConfig.vb j'ai ceci:

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) Dans la page services.aspx, j'ai écrit ceci

Imports System.Web.Routing classe partielle des services Hérite 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

Quand je lance la page, je reçois le message d'erreur

« Aucune référence d'objet est spécifié dans un objet exemple."

Si je supprime la ligne "lblTest.Text = RouteData.Values ​​(" SID "). ToString" il travaille, bien sûr, sans le paramètre SID

Désolé pour le mauvais anglais.

Répondre

0

« Aucune référence d'objet est spécifié dans une instance d'objet » connu sous un autre libellé pour indiquer NullReferenceException en plus commun « référence d'objet non définie à une instance d'un objet » message. Puisque vous mentionnez cette ligne:

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

L'exception se produit lorsque RouteData.Values("SID") contient Nothing et ToString peut ne pas fonctionner avec Nothing ensemble comme chaîne source. Vous pouvez vérifier si RouteData.Values a Nothing en utilisant RouteData.Values.ContainsKey:

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

Puisque vous utilisez MapPageRoute avec FriendlyUrls, je pense que vous devez renommer URL en second argument à un autre nom différent que le nom du fichier ASPX physique, ce qui empêche Nothing passé comme l'argument URL:

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

Ensuite, vous pouvez essayer des déclarations réorganisant à l'intérieur RegisterRoutes afin que EnableFriendlyUrls exécuté après MapPageRoute:

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 

questions similaires:

FriendlyURLs - RouteData returns no value

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