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 によって「%20」として HTTP にエンコードされます。

于 2017-01-09T22:00:11.740 に答える
1

何人かと話し、多くの検索を行った結果、これは SP1 より前の Visual Studio 2010 のバグであることがわかりました。アプリをビルドおよび公開しているマシンには SP1 がインストールされていないため (ただし、アップグレードの予定です)、これが問題でした。

バグをなくすために、" "、"\r"、"\n" の文字に TrimEnd を追加して、置き換えられるアイテムから空白を削除しました。

于 2012-08-23T09:58:27.140 に答える