要使用FriendlyUrls,後你的NuGet安裝它,去你global.asax
並啓用它。
Imports Microsoft.AspNet.FriendlyUrls
Public Class Global_asax
Inherits System.Web.HttpApplication
Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
RegisterRoutes(RouteTable.Routes)
End Sub
Sub RegisterRoutes(ByVal routes As RouteCollection)
routes.EnableFriendlyUrls()
End Sub
'rest of global
這幾乎是它得到了一個頁面的URL的值,你會通過URL段需要循環(別忘了Imports Microsoft.AspNet.FriendlyUrls
):
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
For Each segment As String In HttpRequestExtensions.GetFriendlyUrlSegments(Request)
Dim val As String = segment
Next
End Sub
所以參觀siteURL.com/default/123
將循環一次,給你123
,而siteURL.com/default/122/Bilbo/Baggins
將循環三次,給你122
,Bilbo
和Baggins
。
或者,如果你只是想使用純路由,而不是FriendlyUrls:
routes.MapPageRoute("id-route", "default/{id}", "~/default.aspx")
關於路由的一個好處是,你可以使用查詢使用URL傳遞變量數據沒有字符串。所以要通過域名信息數據的路由看起來像
Sub RegisterRoutes(ByVal routes As RouteCollection)
routes.MapPageRoute("name-route", "default/{id}/{firstName}/{lastName}", "~/default.aspx")
End Sub
然後Default.aspx的可以用siteURL.com/default/123/Frodo/Baggins
被擊中,有:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
Dim id As Integer = 0
Int32.TryParse(Page.RouteData.Values("id"), id)
Dim firstName As String = Convert.ToString(Page.RouteData.Values("firstName"))
Dim lastName As String = Convert.ToString(Page.RouteData.Values("lastName"))
'do something if id > 0
End Sub
其他注意事項:如果只想名在一個列中,則可以合併firstName
和lastName
變量以進行保存。使用-
作爲您所示的有問題的分隔符不是一個好主意,因爲人們可以使用連字符名稱。將姓名保存在單個列中往往會導致問題,因爲這樣會使得按姓氏或名字排序困難得多。
此外,它似乎將從GET
命令插入數據庫。我認爲使用PUT
或POST
會更清楚。
您應該閱讀[爲Web表單定義路由](http://msdn.microsoft.com/zh-cn/library/cc668177.aspx)。 – MikeSmithDev
我做到了。完全按照文章編寫,但在訪問路由{value}時,它是0. – jstorm31