gpt4 book ai didi

asp.net - 友好的 URL 和查询字符串

转载 作者:行者123 更新时间:2023-12-02 04:36:49 26 4
gpt4 key购买 nike

在我的项目(ASP.NET Web 窗体)中,我想使用 Friendly URLs , 从 NuGet 安装。

我在 global.asax 文件中注册了路由:

Public Shared Sub RegisterRoutes(routes As RouteCollection)  
routes.MapPageRoute("Route", "default/{id}", "~/default.aspx?id={id}")
End Sub

通过这段代码,我可以使用 default/123 而不是 default?id=123。我想在 url 中添加分配给 id 的名称。所以我可以有这样的 url:default?123-Firstname-Lastnam。名称保存在数据库中,在单列中。如何将第二个参数(名称)添加到 url,添加符号 - 并在没有字母的情况下显示它:řčš(因为应用程序是 Chech 语言。谢谢回答。

最佳答案

要使用 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 将循环三次并为您提供 122BilboBaggins



或者,如果您只想使用普通路由而不是 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

然后可以使用 siteURL.com/default/123/Frodo/Baggins 访问 default.aspx 并具有:

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



其他注意事项:如果您只想在单个列中显示姓名,则可以组合firstNamelastName 变量进行保存。使用 - 作为您所讨论的分隔符并不是一个好主意,因为人们可以使用连字符连接的名称。将姓名保存在单个列中往往会导致问题,因为这使得按名字或姓氏等进行排序变得更加困难。

此外,您似乎将从 GET 命令插入到您的数据库中。我认为使用 PUTPOST 会更清楚。

关于asp.net - 友好的 URL 和查询字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21800658/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com