首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ActionLink中对参数进行URL编码?

在ActionLink中对参数进行URL编码?
EN

Stack Overflow用户
提问于 2009-11-30 19:55:24
回答 3查看 2.5K关注 0票数 2

我已经注册了以下路线;

代码语言:javascript
复制
        routes.MapRoute(
            "LocationsByArea",                                              
            "Locations/{system}/{storage}/{area}",          
            new { controller = "StorageLocation", action = "Index" },
            null
        );

在我的视图中...and下面的代码;

代码语言:javascript
复制
<%= Html.ActionLink("Platser", "Index", "StorageLocation", new { system = Model.System, storage = Model.Storage, area = item.Name }, null)%>

我的问题是当"area = item.Name“包含冒号时,例如“区域4:1”。如果我单击呈现的链接,我会得到HTTP-error 400,Bad reqest。我想我必须以某种方式对我的面积参数进行编码,但我不知道如何编码。任何帮助都会被删除。

谢谢!

EN

回答 3

Stack Overflow用户

发布于 2010-09-06 19:58:02

内置的编码/解码不起作用,所以我建议你使用自己的,如下所示:

代码语言:javascript
复制
namespace MyProject.Helpers
{
    public static class JobNameHelper
    {
        public static string JobNameEncode(string jobname)
        {
            return jobname.Replace(":", "---colon---");
        }

        public static string JobNameDecode(string jobname)
        {
            return jobname.Replace("---colon---", ":");
        }

    }
}
票数 1
EN

Stack Overflow用户

发布于 2009-11-30 19:58:35

你能不能不用

代码语言:javascript
复制
Server.UrlEnconde(item.Name)

还是我错过了什么?

在您的路由中,您可能还必须使用Server.UrlDecde,尽管我认为它应该在请求时为您解码。

尝试使用Routing Debugger查看传递给url路由器的是什么,然后您就可以知道解码需要在哪里进行

票数 0
EN

Stack Overflow用户

发布于 2009-12-02 02:38:46

ASP.NET 3.5 SP1及更早版本对URL的有效性有许多限制。在ASP.NET 4中,这些问题中的大多数已经修复(或者至少可以通过web.config进行自定义)。我认为,出于安全考虑,冒号字符在ASP.NET 3.5 SP1和更早版本中可能是不允许的。在执行文件检查时,允许冒号可能是一个安全问题,因为冒号是一种鲜为人知的NTFS Alternate Data Streams语法。

出于这些目的,我建议尝试选择冒号以外的字符。也许可以用逗号、分号或等号代替?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1819368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档