C# 字符串包含时找不到操作/

C# 字符串包含时找不到操作/,c#,asp.net-mvc,C#,Asp.net Mvc,我有一个字符串,我想把它传递给id @Html.ActionLink("test","GetData","Home",new {id="abc/cdef"},new {@class="abnc"}) 我的行动是 public ActionResult GetData(string id) { return view(); } 但它不会付诸行动,并且会产生错误 HTTP错误404.0-未找到您正在查找的资源已被删除 已删除、

我有一个字符串,我想把它传递给id

@Html.ActionLink("test","GetData","Home",new {id="abc/cdef"},new {@class="abnc"})
我的行动是

       public ActionResult GetData(string id)
        {
            return view();
        }
但它不会付诸行动,并且会产生错误

HTTP错误404.0-未找到您正在查找的资源已被删除 已删除、名称已更改或暂时不可用

如何解决此问题谢谢

问题 当您在
字符串中有
/
并且您将其传递给操作时,就会发生这种情况,因为路由将其视为另一个参数,因此在
abc/cde
中,默认路由将
abc
视为
id
,但在
//code>之后,它找不到匹配项,因此会出现此错误

解决方案

所以要解决这个问题,请添加
*
如下

routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{*id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );

> <代码> > {*ID} <代码>,将所有内容视为参数值<代码> ID <代码>,包括<代码> /<代码> < /p>必须将ID中的斜杠转义,以便获得URL。如果我有一个包含/的字符串,您会怎么办?还有别的办法吗?谢谢你的解释