我不知道怎么问,我也不知道它叫什么,所以我只描述我想要实现的目标。
在数据库中,一些文章的标题原来是有空格的:
my title with spaces但在url中,空格被其他字符替换,如加号(+)或下划线(_)。
http://www.mydomain.com/mycontroller/myaction/my_title_with_spaces或
http://www.mydomain.com/mycontroller/myaction/my+title+with+spaces现在,你如何在C#中做到这一点呢?或者,在ASP.NET MVC中有没有助手可以做这样的事情?
假设我们实现了上述URL,是否存在两个唯一的标题在URL中变得相同的风险?请考虑以下标题:
Title's
Titles解析后,它们变得相同
标题标题
当从数据库检索文章时,这将是一个问题,因为我将得到两个结果,一个是"Title“,另一个是"Title's”。
发布于 2011-12-19 11:06:38
我会像这样实现该功能:
创建新文章时,根据标题生成表示。
使用一个函数将标题转换为合适的表示形式。例如,标题"This is a example“可能会生成类似"This_is_an_example”的内容。
这取决于你。您可以创建一个使用您定义的规则解析标题的函数,或者使用现有的函数(如果它更适合您的问题)。
URL2.确保表示是唯一的
如果它是一个ID,它必须是唯一的。因此,在创建新文章时,必须查询数据库以获得结果URL表示。如果从数据库中获得结果,则意味着新创建的文章生成的表示与已创建的文章中的一个相同。添加一些东西,让它保持独一无二。
这可能是类似于"This_is_an_example_2“的内容。在这种情况下,我们将"_2“添加到生成的表示的末尾,以便它不同于现有的表示。同样,对于每个更改,您必须确保此表示保持唯一性。
3.将创建的ID与文章data一起保存在数据库中
在数据库中,确保保存"This_is_an_example“ID并将其与文章相关联。甚至可以作为表的主键?
4.在数据库中查询正确的文章
现在,关于向站点访问者显示正确的文章:例如,当访问者请求以下资源时:
http://www.mydomain.com/mycontroller/myaction/this_is_an_example_2提取标识文章的URL部分,在本例中为"this_is_an_example_2“。
当你有了它,你就有了数据库中文章的标识符。因此,您可以使用"this_is_an_example_2“ID查询数据库中的文章,并向用户显示文章的内容。
这可能涉及到一些URL重写。不幸的是,我无法在asp.NET中帮助你。一些关于这个主题的搜索肯定会对你有所帮助。
https://stackoverflow.com/questions/8556570
复制相似问题