【问题标题】:ASP.NET 4 Routing hide id parameterASP.NET 4 路由隐藏 id 参数
【发布时间】:2011-06-07 22:16:48
【问题描述】:

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

虽然在尝试从数据库中获取数据时,我必须传递一个 ID 参数,但我可以正常工作,例如:

服务/{id}/{category}/{subcategory}

作品集/{id}/{category}/{title}

博客/{date}/{id}/{title}

我见过做同样事情的网站,但他们似乎没有传递 ID 参数,他们是如何实现这一点的?

如果他们希望根据上面的链接获得有关特定服务的信息,您是否只需运行 SQL 查询以查找子类别名称的匹配项,或者针对博客文章查找博客标题和日期的匹配项?

这对我来说似乎有点奇怪,如果你有人添加博客文章等,那么多次匹配的可能性总是很小。

感谢您的帮助,

J.

【问题讨论】:

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


    【解决方案1】:

    在发布之前,您始终可以检查您的博客文章 URL 的名称。如果存在,只需添加“_1”或其他内容。此外,它们主要包括日期。

    【讨论】:

      【解决方案2】:

      在 ASP.NET 路由中,当您使用 HttpGet 协议时,ID 通常在 url 中传递。这通常发生在您有链接时:

      <a href="tvShows/comedy/35">Watch The Big Bang Theory</a>
      

      有你想要避免的 id。

      您还可以使用 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 提交表单。

      【讨论】:

      • 我没有使用 MVC,所以不确定这是否会有所不同。以前有人向我提到过这个,但是必须在网站上的每个链接中完成一个,因为每个页面几乎都来自数据库,因此很容易有 100 个链接。
      • 这种技术是否适用于 MVC(除了我提到的控制器)。所有这些值都可以使用传统的 asp.net 控件进行设置,并使用绑定从数据库中读取。没问题。这是要走的路。
      【解决方案3】:

      正如您所说,他的网站可能正在使用其他东西作为唯一参数来识别要查询的对象。也许他们正在使用在后台登录时设置的用户名或 ID,以将 sql 查询限制为仅适用于该用户的项目。

      【讨论】:

        【解决方案4】:

        通常你会维护一个标题 -> id 关系...所以每次保存、更新或删除博客时,都会保留 title_id 表中的相应记录,因此只需一个选择查询即可完成查找。

        【讨论】:

          猜你喜欢
          • 2015-07-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-07-24
          • 1970-01-01
          • 2014-06-30
          相关资源
          最近更新 更多