6

我想创建与创建问题时堆栈溢出类似的 url 类型。

例子:

使用 jQuery(插件?)的非 ajax GET/POST 非 ajax-get-post-using-jquery-plugin

我对我用粗体突出显示的最后一部分特别感兴趣。用分隔符将页面标题添加到url的效果如何实现?

这种技术叫什么?

4

7 回答 7

14

尽可能使用ASP.NET 路由而不是重写。它适用于 MVC 和 Web 窗体。路由更加灵活,并且在将上下文传递给处理代码、处理回发等方面做得更好。

在执行 ASP.NET 代码之前,您还可以使用IIS7 重写模块在网络服务器级别处理重写。这里有一些关于如何做到这一点的好信息。

于 2009-07-20T06:05:50.510 回答
6

SO 的 URL 重写由 ASP.NET MVC 中的路由引擎提供。

于 2009-07-20T06:04:46.033 回答
5

这种技术称为“URL 重写”。您用“asp.net”标记了问题,因此 MSDN 可以帮助您:http: //msdn.microsoft.com/en-us/library/ms972974.aspx

于 2009-07-20T06:03:07.863 回答
5

Stackoverflow 是在 ASP.Net MVC 中编程的,URL 路由是 MVC 包的标准部分。除了 URL 路由之外,它还提供了更多优势。因此,如果您正在构建一个新网站,并且希望获得 URL 路由以及其他优势的好处,请尝试在 MVC 中进行。

但是请注意,您将不得不学习很多东西。

于 2009-07-20T06:25:37.630 回答
1

这种技术叫什么?

就像其他人所说的那样,该技术称为路由。基本上,它需要您格式化的 URL 并将其映射到一些控制器操作。根据 Jon Galloway 的回答, IIS 7 集成了这个功能。对于以前版本的 IIS,您可能必须设置通配符应用程序映射到 ASP.NET 运行时,并且如果您选择的 Web 框架不提供路由功能,您可能需要将自己的 HttpModule 添加到应用程序的请求管道中以处理路由。

用分隔符将页面标题添加到url的效果如何实现?

您可以通过小写标题并用连字符替换非字母数字字符来完成此操作。有时这个位被称为蛞蝓。您可能还希望降低 slug 的长度,以免遇到URL 长度限制问题。您还可以选择在几个地方生成 slug:

  • 提交标题后,将 slug 与页面数据的其余部分一起保存。
  • 或者当您生成链接到具有标题的页面的页面时即时生成它。

请记住,不应使用 slugs 来查找页面数据,这就是页面 ID 的用途;蛞蝓应该是可选的。您的路由规则将只关心从 URL 中获取 ID 并将其提供给正确的控制器操作,同时忽略之后的所有内容。换句话说,唯一关键的部分是问题 ID。蛞蝓只是糖。:)

于 2009-07-20T07:06:14.863 回答
0

虽然在这里路由显然是更好的选择,但有一些方法可以轻松地伪造它。例如,这是获取友好 URL 和一些 SEO 的简单方法:
假设您有页面:

example.aspx

即使不执行任何操作,以下 URL也将起作用:

example.aspx/some-friendly-text

您还可以组合查询数据:

example.aspx?id=1
example.aspx/some-friendly-text?id=1

如果需要,您可以使用请求的PathInfo属性访问该文本。

于 2009-07-20T07:47:45.793 回答
0

不要忘记,通过这种类型的路由,人们可以使用您可能不希望他们使用的文本链接到您的页面。

我在英国报纸上看到过很多这样的事情——他们会发布一个带有 URL 的故事

newsdoman.co.uk/articles/1128945/dog-bites-man

然后有人会链接到它

newspaperdoman.co.uk/articles/1128945/newspaper-in-crap-story-shocker

管他呢。

于 2009-07-20T08:58:02.830 回答