0

我正在使用 C# ASP MVC3,并且我正在制作一个生成的菜单,其中包含通过城堡温莎传递的参数。

当我在本地开发和测试时,这段代码生成的 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 传递的每个参数之间。

不完全确定显示哪些区域可以帮助解决问题。可能是 web.config 中使用的 xdt:Transform:Replace 还是完全不同的东西。您可以提供的任何帮助将不胜感激。

谢谢。

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

4

2 回答 2

2

所以实际的答案就在这篇文章中。nchar 类型末尾有空格,由 Asp.net 编码为 HTTP 为 '%20'。

于 2017-01-09T22:00:11.740 回答
1

在与几个人交谈并进行了大量搜索后,我发现这是 SP1 之前 Visual Studio 2010 中的一个错误。由于正在构建和发布应用程序的机器尚未安装 SP1(尽管它应该升级),这就是问题所在。

为了使这个错误成为无因素,我为字符“”、“\r”、“\n”添加了一个 TrimEnd,以从被替换的项目中删除任何空白。

于 2012-08-23T09:58:27.140 回答