ASP.NET 4路由隐藏id参数

时间:2011-01-12 15:43:24

标签: asp.net routing url-routing asp.net-4.0

我正在学习.net并构建一个使用网址路由的网站。

我有它工作虽然在尝试从数据库获取数据时我必须传递ID参数,例如:

服务/ {ID} / {类别} / {子类别}

组合/ {ID} / {类别} / {TITLE}

博客/ {日期} / {ID} / {TITLE}

我看过网站做同样的事情,但他们似乎没有传递ID参数,他们如何实现这个目标?

如果他们想要根据上面的链接获得有关特定服务的信息,您只需运行一个SQL查询来查找子类别名称或博客文章中的匹配项,以查找博客标题和日期的匹配项吗? / p>

这对我来说似乎有点奇怪,如果你有人添加博客文章等,总会有超过一场比赛的可能性。

感谢您的帮助,

学家

4 个答案:

答案 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表中的相应记录,以便只需一个选择查询即可完成查找。