我有一个ASP.Net应用程序,里面有很多页面。我的问题是唯一标识我的应用中的每个页面。现在,应用程序可能只有页面名称的页面,例如:home.aspx,并且可以包含查询字符串的页面,例如:testPage.aspx?q1 = 1& q2 = 2。
我一直在想的是因为我的应用程序中的每个URL都是唯一的,我可以使用页面名称+所有查询字符串参数连接(键和值)来唯一地标识页面。 例如: home.asp - >家
testPage.aspx?q1 = 1& q2 = 2 - > testpageq11q22
这是正确的方法,还是有更好的方法。
我想这样做的原因是我需要在运行时为每个页面添加一些来自数据库的元数据信息。然后,PageID成为我的唯一ID,然后我可以将db中的所有元数据信息映射到。
编辑:
网址中查询字符串的位置并不重要。所以
testPage.aspx Q1 = 1&安培; Q2 = 2
testPage.aspx Q2 = 2及?Q1 = 1
是相同的
还有一些情况下,有一个可选的查询字符串(不会发生很多),所以像
testPage.aspx Q1 = 1&安培; Q2 = 2
testPage.aspx Q1 = 1&安培; Q2 = 2及OPT1 = 1
可能会指向同一页面(其中可选参数为我提供了某些未用于在页面上生成内容的元信息)
答案 0 :(得分:3)
为什么需要为页面创建ID?您可以直接使用URL。
这将是更多的角色,但这几乎不重要,因为你已经在比较字符串。此外,通过不改变地使用它可以避免任何冲突,例如在Page.aspx?ViewId = 42和PageView.aspx?Id = 42之间。
答案 1 :(得分:0)
使用您的方法,如果您定义适当的分隔符会更好:
testPage.aspx?q1=1&q2=2 -> testpage_q11-q22
此处_
用于将页面名称与查询字符串分开,-
将查询字符串参数与另一个进行分隔。
答案 2 :(得分:0)
您始终可以使用网址的哈希值来获得更好的值。由于其他人在歧义上提出的建议,它肯定比你所做的要好。它还为您提供了一个int,它是一个比字符串更好的标识符。虽然碰撞的可能性非常小,但我认为你不必特别担心。 :)
答案 3 :(得分:0)
如果这是一个面向公众的网站,你对搜索引擎优化有任何顾虑,你可以考虑使用网址重写模块,如UrlRewriter,这将使你能够生成更好看的网址(有点像SO)。
所以你可以映射
www.mysite.com/testpage.aspx?pageId=1
更友好的
www.mysite.com/1.aspx
甚至更好,如果你把一个很好的描述作为url参数包含在内,你可以使用Urls这样的
www.mysite.com/testpage.aspx?pageId=1&pageTitle=something-nice
到
www.mysite.com/1/something-nice.aspx