gpt4 book ai didi

asp.net-mvc - 参数中带有斜杠的 URL?

转载 作者:行者123 更新时间:2023-12-03 05:35:34 26 4
gpt4 key购买 nike

问题:

我正在创建一个 wiki 软件,基本上是 wikipedia/mediawiki 的克隆,但是使用 ASP.NET MVC(MVC 是重点,所以不推荐我 ScrewTurn)。

现在我有一个问题:

我使用此路由映射来路由 URL,例如:
http://en.wikipedia.org/wiki/ASP.NET

        routes.MapRoute(
"Wiki", // Routenname
//"{controller}/{action}/{id}", // URL mit Parametern
"wiki/{id}", // URL mit Parametern
new { controller = "Wiki", action = "dbLookup", id = UrlParameter.Optional } // Parameterstandardwerte
);

现在我突然想到,可能会有像“AS/400”这样的标题:
http://en.wikipedia.org/wiki/AS/400

顺便说一句,还有这个(标题“斜线”):
http://en.wikipedia.org/wiki//

还有这个:
http://en.wikipedia.org/wiki//dev/null

总的来说,维基百科似乎有一个有趣的标题列表,如下所示: http://en.wikipedia.org/wiki/Wikipedia:Articles_with_slashes_in_title

如何正确制作像这样的路线?

编辑:
类似于:
如果 URL 以/Wiki/开头,并且不以/wiki/Edit/开头(但不是/维基/编辑)然后将 URL 的其余部分作为 Id 传递。

编辑:
嗯,还有一个问题:我该如何路由这个:
http://en.wikipedia.org/wiki/C&A

维基百科可以...

编辑:
根据维基百科,由于与维基文本语法冲突,只有以下字符永远不能在页面标题中使用(DISPLAYTITLE 也不支持它们):

# < > [ ] | { }

http://en.wikipedia.org/wiki/Wikipedia:Naming_conventions_(technical_restrictions)#Forbidden_characters

编辑:
要允许 * 和 &,请输入

<httpRuntime requestPathInvalidCharacters="" />

进入文件 web.config 中的 部分

(在这里找到:http://www.christophercrooker.com/use-any-characters-you-want-in-your-urls-with-aspnet-4-and-iis)

最佳答案

您可以使用包罗万象的路由将网址 wiki 部分后面的所有内容捕获到 id token 中:

routes.MapRoute(
"Wiki",
"wiki/{*id}",
new { controller = "Wiki", action = "DbLookup", id = UrlParameter.Optional }
);

现在,如果您有以下请求:/wiki/AS/400,它将映射到 Wiki Controller 上的以下操作:

public ActionResult DbLookup(string id)
{
// id will equal AS/400 here
...
}

/wiki// 而言,我相信在此请求到达 ASP.NET 管道之前,您会从 Web 服务器收到 400 Bad Request 错误。您可以查看following blog post .

关于asp.net-mvc - 参数中带有斜杠的 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6328713/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com