在我的项目(ASP.NET Web窗体)中,我想使用从NuGet安装的Friendly URLs。
我在 global.asax 文件中注册 route :
Public Shared Sub RegisterRoutes(routes As RouteCollection)
routes.MapPageRoute("Route", "default/{id}", "~/default.aspx?id={id}")
End Sub
使用此代码,我可以使用默认/ 123 而不是默认值?id = 123 。我想在网址中添加分配给id的名称。所以我可以这样设置url:default?123-Firstname-Lastnam。名称以单列保存在数据库中。如何将第二个参数(名称)添加到网址,添加符号-
并显示没有这样的字母:řčš
(因为应用程序是Chech语言。
谢谢你的回答。
答案 0 :(得分:5)
使用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
这就是它。要从页面的网址中获取值,您需要循环访问网址细分(不要忘记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
和{{ 1}}。
或者,如果您只想使用普通路由而不是使用FriendlyUrls:
Baggins
关于路由的一个好处是,您可以使用URL来传递可变数据而不使用使用查询字符串。因此传递名称数据的路径可能看起来像
routes.MapPageRoute("id-route", "default/{id}", "~/default.aspx")
然后可以使用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
。