gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 21:33:57 24 4
gpt4 key购买 nike

在我的项目(ASP.NET Web Forms)中,我想使用 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 段(不要忘记导入 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/

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