我有一个包含我网站用户的一些记录的数据库,例如姓名、电子邮件、地址等。我使用 ASP.net (C#) 创建了一个页面,该页面可以有序地显示用户的信息。当有人从列表中单击用户名时,我想显示该页面的信息。如何在页面中添加参数?这样我就可以使用列表中与用户名链接的名称或 ID 从数据库中获取数据。
我想做的是这样的:
example.com/userpage.aspx/XYZ
我有一个包含我网站用户的一些记录的数据库,例如姓名、电子邮件、地址等。我使用 ASP.net (C#) 创建了一个页面,该页面可以有序地显示用户的信息。当有人从列表中单击用户名时,我想显示该页面的信息。如何在页面中添加参数?这样我就可以使用列表中与用户名链接的名称或 ID 从数据库中获取数据。
我想做的是这样的:
example.com/userpage.aspx/XYZ
您可以使用查询字符串参数:
example.com/userpage.aspx?id=XYZ
使用 Request 对象上的 QueryString 集合访问服务器上的 id:
string id = Request.QueryString["id"];
我认为您可能希望使用ASP.NET 路由引擎来获取 URL 的一部分并将其路由到参数。
您可以将路线设置为 example.com/page.aspx?id=xyz 等于 example.com/page/xyz
如果您使用的是经典的 ASP.NET,那么您必须按照 Xander 的建议将参数传递给查询字符串。ASP.NET 在 ? 之后正确解析参数?您可以通过 Request["parameterName"] 访问它们。
但是,如果您想要像您发布的“用户友好 url”,那么您需要一些机制将用户友好 url 重写为系统 url。
首先,您可以使用 IIS7 Url Rewrite 模块或任何 3d 方 Url Rewrite 模块。通常是基于正则表达式,可以将url /Users/XYZ 改写为 /Users.aspx?name=XYZ
您也可以像 Ryan 建议的那样使用相对较新的技术 ASP.NET Routing Engine。
如果您的 url 方案很复杂,无法用正则表达式描述,那么您可以编写自己的 HTTP 模块并执行一些自定义的重写规则。
如果您的 Users.aspx.cs 页面您可以从 Request["Name"] 中读取查询参数,并使用它的值来执行一些 SQL 查询(或您想要访问数据库的任何内容)
如果您使用的是 GridView,您只需将 OnRowCommand 事件附加到它,然后单击链接即可将名称传递给要在页面上显示的 UserID。