2012-08-06 55 views
0

我正在使用C#ASP MVC3,并且使用通过城堡windsor传递的参数生成菜单。MVC HTML动作链接在URL中插入大量%20

当我开发和本地测试,从这个代码生成的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决定增加:

%0D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20 

在每个正在通过URL传递的参数之间。

不完全确定要显示哪些区域来帮助解决问题。它可能是xdt:Transform:Replace在web.config中使用或完全不同。任何帮助,你可以提供将不胜感激。

谢谢。

更新:我发现是什么导致正在生成的链接中的所有这些空间。 XML替换在进行替换时在XML文件中添加了返回值和空格。我现在要解决这个问题,因为它不是很理想,所以这个问题已经改变了,我们该如何阻止xdt:替换为添加这些不需要的空格并返回?

+1

'%20'是空格的HTML编码。你确定你使用的参数没有空格吗? – 2012-08-06 14:29:52

+0

除了@AndreCalil评论之外,'%0D%0A'对Windows换行符进行了编码。 – Oded 2012-08-06 14:32:21

+0

@Oded这是一个很好的观点,我忽略了这一部分。大卫,你是否在本地和测试服务器上使用相同的数据源? – 2012-08-06 14:33:49

回答

1

在和几个人谈话并做了大量搜索之后,我发现这是SP1之前的visual studio 2010中的一个bug。由于正在构建和发布应用程序的计算机尚未安装SP1(这是由于升级所致),所以这是问题所在。

为了使错误成为一个无关紧要的因素,我为字符“”,“\ r”,“\ n”添加了一个TrimEnd,以删除正在替换的项目中的空白区域。

+0

我也有VS2015的这个bug。不知道该修补程序是什么。 – 2017-01-09 21:48:03

2

所以实际的答案在于this post。 nchar类型在结尾有空格,由Asp.net将其编码为'%20'。