Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MVC HTML ActionLink在URL中插入大量%20_C#_Xml_Asp.net Mvc_Castle Windsor_Xdt Transform - Fatal编程技术网

C# MVC HTML ActionLink在URL中插入大量%20

C# MVC HTML ActionLink在URL中插入大量%20,c#,xml,asp.net-mvc,castle-windsor,xdt-transform,C#,Xml,Asp.net Mvc,Castle Windsor,Xdt Transform,我使用的是C#ASP MVC3,我正在生成一个菜单,其中包含通过castle windsor传递的参数 当我在本地开发和测试时,从这段代码生成的URL很好: @foreach(var menuItem in Model.MenuItems) { var dic = new RouteValueDictionary(); foreach (var item in menuItem.QueryValues)

我使用的是C#ASP MVC3,我正在生成一个菜单,其中包含通过castle windsor传递的参数

当我在本地开发和测试时,从这段代码生成的URL很好:

  @foreach(var menuItem in Model.MenuItems)
        {
            var dic = new RouteValueDictionary();



            foreach (var item in menuItem.QueryValues)
            {
                dic.Add(item.Key, item.Value);
            }


            <li>@Html.ActionLink(menuItem.Name, menuItem.ControllerAction, dic)</li>

            }
在与URL一起传递的每个参数之间

不完全确定显示哪些方面有助于解决问题。它可能是web.config中使用的xdt:Transform:Replace或完全不同的东西。如果您能提供任何帮助,我们将不胜感激

谢谢


更新:我在正在生成的链接中找到了导致所有这些空格的原因。XML替换在执行替换时在XML文件中添加了返回和空格。我将暂时不讨论这个问题,因为这种情况并不理想,所以问题有点变为如何阻止xdt:Replace添加这些不需要的空格和返回?

在与一些人交谈并进行大量搜索后,我发现这是SP1之前的visual studio 2010中的一个bug。由于正在构建和发布应用程序的计算机尚未安装SP1(但需要升级),这就是问题所在


为了使缺陷成为无因素,我为字符“,”\r“,“\n”添加了一个修剪,以删除被替换项中的任何空白。

在与一些人交谈并进行大量搜索后,我发现这是SP1之前visual studio 2010中的一个缺陷。由于正在构建和发布应用程序的计算机尚未安装SP1(但需要升级),这就是问题所在


为了使bug成为一个无因素,我为字符“,”\r“,“\n”添加了一个修剪,以删除被替换项中的任何空白。

因此实际答案在于。nchar类型的末尾有空格,Asp.net将其编码为HTTP“%20”

因此,真正的答案在于。nchar类型的末尾有空格,Asp.net将其编码为HTTP“%20”

%20
是空空间的HTML编码。你确定你正在使用的参数没有空格吗?除了@AndreCalil评论的内容之外,
%0D%0A
对Windows换行符进行编码。@Oded这是一个很好的观点,我忽略了这一部分。David,您是否在本地和测试服务器上使用相同的数据源?都来自web.config文件。我使用xml文档转换来允许每个环境都有自己的配置,因此在主配置标记中有
,在需要替换的标记中有
。在本地,这不会生成这些空格和换行符。我尝试过在菜单本身和xml中重新调整格式,但没有找到问题所在。我去检查了服务器上的web.config文件,它添加了在执行替换操作时通常不存在的空格和返回。我在服务器上动态编辑了这些内容,它似乎解决了链接生成中的问题。
%20
是空空间的HTML编码。你确定你正在使用的参数没有空格吗?除了@AndreCalil评论的内容之外,
%0D%0A
对Windows换行符进行编码。@Oded这是一个很好的观点,我忽略了这一部分。David,您是否在本地和测试服务器上使用相同的数据源?都来自web.config文件。我使用xml文档转换来允许每个环境都有自己的配置,因此在主配置标记中有
,在需要替换的标记中有
。在本地,这不会生成这些空格和换行符。我尝试过在菜单本身和xml中重新调整格式,但没有找到问题所在。我去检查了服务器上的web.config文件,它添加了在执行替换操作时通常不存在的空格和返回。我在服务器上动态编辑了这些,它似乎解决了链接生成中的问题。我在VS2015中也有这个错误。还不知道修复的是什么。我在VS2015中也有这个bug。还不知道解决办法是什么。
%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20