如何在ASP.NET MVC Razor中编码'/'

sim*_*mer 5 c# asp.net-mvc razor

控制器:

public ActionResult Tool(string id)
{
  // Code goes here . . 
}
Run Code Online (Sandbox Code Playgroud)

视图:

<a href="/Home/@item.Type/@Url.Encode(item.Title)" id="toolTitleLink">@item.Title</a>
Run Code Online (Sandbox Code Playgroud)

从上面的代码@item.Title可以有特殊字符,如'/'示例链接是http://localhost:39727/Home/Tool/C+Compiler+For+The+Pic10%2f12%2f16+Mcus当我尝试导航到该链接Tool Controller未被调用.我曾经使用@Url.Encode但仍未Controller被召唤.

And*_*nea 2

不幸的是,即使你使用System.Uri.EscapeDataString而不是Url.Encode像这样:

<a href="/Home/@item.Type/@System.Uri.EscapeDataString(item.Title)" id="toolTitleLink">@item.Title</a>
Run Code Online (Sandbox Code Playgroud)

渲染的页面将对斜杠进行编码(查看页面的“查看源代码”),浏览器仍会对它们进行解码。

据我所知,你有两个选择:

  1. 使用不同的字符 - 进行您自己的转义(可以这么说;)) - 例如使用 tilda (~) 或您想要的任何其他URL 有效字符,以替换正斜杠。

  2. 为该操作创建一个特殊的路径,并在末尾包含一个包罗万象的内容,并从该操作中解析内容。