1

我的操作采用基于用户名的字符串 id 参数,该用户名可以包含需要编码的字符,例如“user?1”

如果我ActionLink()用来生成链接,传递没有编码的字符串,它会生成一个像这样的链接:http:\\localhost\controller\action\user?1,并且操作将“user”作为id传递。

如果我UrlEncode()在将它传递给之前的字符串ActionLink,那么生成的链接是:http:\\localhost\controller\action\user%253f1因为 ActionLink 将为您编码 '%' 字符。除了这看起来丑陋之外,它还会在访问我尚未找到原因的链接时生成 HTTP 错误 400 - 错误请求。

有什么方法可以生成如下网址:http:\\localhost\controller\action\user%3f1

4

3 回答 3

0

您可以创建一个 jquery 插件来检查所有链接并将需要替换的字符替换为新值。并将此插件应用于所有 ActionLinks

于 2011-10-31T19:28:56.980 回答
0

怎么去掉?字符或用破折号 (-) 或下划线 (_) 之类的其他内容替换它?

于 2009-01-30T00:19:42.197 回答
0

您应该查看 Global.asax.cs 文件

为方便起见,添加另一条路线,在本例中为 ff。可能工作:

        routes.MapRoute(
             null,                            
             "{controller}/{action}/user/{id}",
             new { controller = "Home", action = "Index" }
         );

我想这就是你想要的,为每个用户单独操作,但我建议你为此目的使用 cookie。

PS:记住把那个放在你的默认路由之上,因为路由试图从上到下匹配。

于 2010-02-21T09:36:58.737 回答