【发布时间】:2010-06-17 02:08:38
【问题描述】:
在 ASP.NET 中创建唯一网页地址是否有标准方法?我正在向客户发送调查,并将包含指向网页的链接。例如:
http://www.mysurveypages.foo/survey/UniqueID
然后我会根据我将调查发送给谁来定制调查。我知道可以通过将唯一参数传递给页面来完成,但我很好奇这样做。
【问题讨论】:
标签: asp.net
在 ASP.NET 中创建唯一网页地址是否有标准方法?我正在向客户发送调查,并将包含指向网页的链接。例如:
http://www.mysurveypages.foo/survey/UniqueID
然后我会根据我将调查发送给谁来定制调查。我知道可以通过将唯一参数传递给页面来完成,但我很好奇这样做。
【问题讨论】:
标签: asp.net
您可以使用Routing 将您的网址结构映射到特定页面和参数集合。本质上,它允许您将部分 url 转换为页面的 url 参数。这在标准 WebForms 中有效,并且是 MVC 选择要调用的适当控制器/动作签名的基础。
【讨论】:
是的,就像 dcp 说的 GUID 是一个合理的解决方案 http://mywebsite.com/survey.aspx?ID=GUID
【讨论】:
假设您要将调查发送给用户列表。
List<User> users = GetSurveyUsers();
foreach(User u in users)
{
Guid guid = Guid.NewGuid();
//Then store the user-guid pair into DB or XML...
}
【讨论】:
最简单的解决方案似乎是使 UniqueID 成为一个递增字段,可用于从数据库中获取适当的用户信息。您可以使用数字、Guid 或一些字母数字值,这并不重要。
如果您使用 ASP.Net MVC,则很容易将 Url(如您指定的那个)映射到控制器操作,该操作获取作为参数传入的 ID。否则,您可能需要查看 some sort of Url rewriting 以确保 Url 美观。
【讨论】:
GUID 方法是最安全的,如果您能够将其存储在某个地方。如果不是,您可以直接使用一些现有的唯一数据(例如客户 ID 或电子邮件地址)(但要小心泄露敏感数据)或散列(但需要考虑冲突)。
【讨论】: