友好的URL和查询字符串

用户名

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

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的名称。因此,我可以使用如下网址:default?123-Firstname-Lastnam。名称保存在数据库的单列中。如何将第二个参数(名称)添加到url,添加符号-并显示时不带字母,如下所示:(řčš因为该应用程序使用的是Chech语言。感谢您的回答。

迈克·史密斯·德夫(MikeSmithDev)

要使用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

然后可以用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



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

同样,您似乎将通过GET命令将其插入数据库我认为使用PUT可以更清楚地了解这一点POST

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章