我正在学习.net并构建一个使用网址路由的网站。
我有它工作虽然在尝试从数据库获取数据时我必须传递ID参数,例如:
服务/ {ID} / {类别} / {子类别}
组合/ {ID} / {类别} / {TITLE}
博客/ {日期} / {ID} / {TITLE}
我看过网站做同样的事情,但他们似乎没有传递ID参数,他们如何实现这个目标?
如果他们想要根据上面的链接获得有关特定服务的信息,您只需运行一个SQL查询来查找子类别名称或博客文章中的匹配项,以查找博客标题和日期的匹配项吗? / p>
这对我来说似乎有点奇怪,如果你有人添加博客文章等,总会有超过一场比赛的可能性。
感谢您的帮助,
学家
答案 0 :(得分:2)
在发布之前,您始终可以检查博客帖子的名称。如果它存在,只需添加“_1”或其他东西。此外,他们大多包括日期。
答案 1 :(得分:1)
在ASP.NET路由中,当您使用HttpGet协议时,ID通常会在URL中传递。这通常在您有链接时发生:
<a href="tvShows/comedy/35">Watch The Big Bang Theory</a>
你想要避免你的身份。
您还可以使用HttpPost协议并传递标题中表单字段中的值(对于临时用户是不可见的)。
<form id="whatToDo">
<input type="hidden" id="Category' value="tvShows">
<input type="hidden" id="Genre' value="comedy">
<input type="hidden" id="ShowId' value="35">
<p>
<input type="submit" value="Watch The Big Bang Theory" />
</p>
</form>
因此,当用户点击该按钮时,您的接收控制器将有三个表单字段,分类,类型和带有嵌入值的ShowId,它们不会出现在URL中。
如果您不喜欢该按钮,但需要一个链接,您可以随时使用javaScript / jQuery提交表单。
答案 2 :(得分:0)
正如您所说,他的网站可能正在使用其他内容作为唯一参数来标识要查询的对象。也许他们正在使用在幕后登录时设置的用户名或ID,以将sql查询限制为仅适用于该用户的项目。
答案 3 :(得分:0)
通常你会保留一个标题 - &gt; id关系......所以每次保存,更新或删除博客时,都会保留title_id表中的相应记录,以便只需一个选择查询即可完成查找。