无法在 vb.net 中获取 Page.RouteData.Values
Can't fetch Page.RouteData.Values in vb.net
我正在尝试在 asp vb.net 应用程序上启用路由。
我遵循了接下来的步骤:
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) 在 RouteConfig.vb 我有这个:
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
部分 Class 服务
继承 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
结束Class
当我 运行 页面时,我收到错误消息
"No object reference is specified in an object instance."
如果我删除 "lblTest.Text = RouteData.Values("SID").ToString" 行,它可以正常工作,当然没有 SID 参数
抱歉英语不好。
"No object reference is specified in an object instance" 除了常见的“对象引用未设置为对象的实例 被称为另一种表示 NullReferenceException
=48=]”消息。既然你提到了这一行:
lblTest.Text = RouteData.Values("SID").ToString
当 RouteData.Values("SID")
包含 Nothing
并且 ToString
无法将 Nothing
设置为其源字符串时发生异常。您可以使用 RouteData.Values.ContainsKey
:
检查 RouteData.Values
是否有 Nothing
If (Page.RouteData.Values.ContainsKey("SID")) Then
lblTest.Text = RouteData.Values("SID").ToString
End If
由于您将 MapPageRoute
与 FriendlyUrls
一起使用,我认为您需要将第二个参数中的 URL 重命名为另一个不同于物理 ASPX 文件名的名称,以防止 Nothing
作为 URL 参数传递:
' note 's' omitted in Service/{SID} route
routes.MapPageRoute("Services", "Service/{SID}", "~/Services.aspx")
然后,您可以尝试重新排序 RegisterRoutes
中的语句,以便 EnableFriendlyUrls
在 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
类似问题:
FriendlyURLs - RouteData returns no value
Page.RouteData.Values are empty for one page but not another
我正在尝试在 asp vb.net 应用程序上启用路由。
我遵循了接下来的步骤:
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) 在 RouteConfig.vb 我有这个:
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 部分 Class 服务 继承 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
结束Class
当我 运行 页面时,我收到错误消息
"No object reference is specified in an object instance."
如果我删除 "lblTest.Text = RouteData.Values("SID").ToString" 行,它可以正常工作,当然没有 SID 参数
抱歉英语不好。
"No object reference is specified in an object instance" 除了常见的“对象引用未设置为对象的实例 被称为另一种表示 NullReferenceException
=48=]”消息。既然你提到了这一行:
lblTest.Text = RouteData.Values("SID").ToString
当 RouteData.Values("SID")
包含 Nothing
并且 ToString
无法将 Nothing
设置为其源字符串时发生异常。您可以使用 RouteData.Values.ContainsKey
:
RouteData.Values
是否有 Nothing
If (Page.RouteData.Values.ContainsKey("SID")) Then
lblTest.Text = RouteData.Values("SID").ToString
End If
由于您将 MapPageRoute
与 FriendlyUrls
一起使用,我认为您需要将第二个参数中的 URL 重命名为另一个不同于物理 ASPX 文件名的名称,以防止 Nothing
作为 URL 参数传递:
' note 's' omitted in Service/{SID} route
routes.MapPageRoute("Services", "Service/{SID}", "~/Services.aspx")
然后,您可以尝试重新排序 RegisterRoutes
中的语句,以便 EnableFriendlyUrls
在 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
类似问题:
FriendlyURLs - RouteData returns no value
Page.RouteData.Values are empty for one page but not another