0

MvcHtmlStringエンコードされていることに気付いたを返す拡張メソッドがあります。場合によっては、クエリ文字列パラメーターをルートに追加しています。私の望ましい結果は次のようになります:List/View/28?category=0&sort=Default ただし、代わりにエンコードされた文字列をレンダリングしています:ListView/28%3fcategory%3d0%26sort%3dDefault

C# と Razor コードでデコードしようとしましたが、効果がありません。他に試せることはありますか?

public static MvcHtmlString GenerateLanguageLink(this HtmlHelper html)
        {
            var routeDictionary = html.ViewContext.RouteData.Values;

            var queryStringCollections = html.ViewContext.HttpContext.Request.QueryString;
            var queryStringText = string.Empty;
            if (queryStringCollections.Count > 0)
            {
                queryStringText = queryStringCollections.ToString();
                routeDictionary["Id"] = HttpUtility.HtmlDecode(routeDictionary["Id"] + string.Format("?{0}", queryStringText));
            }

            return html.ActionLink(linkText, routeDictionary["action"].ToString(), routeDictionary["controller"].ToString(), routeDictionary, null);
        }

かみそり:

@Html.Raw(HttpUtility.HtmlDecode(@Html.GenerateLanguageLink().ToHtmlString()))
4

2 に答える 2

0

HttpUtility.HtmlDecode下から削除するだけです

routeDictionary["Id"] = HttpUtility.HtmlDecode(routeDictionary["Id"] + string.Format("?{0}", queryStringText));

コードは次のとおりです。

routeDictionary["Id"] = (routeDictionary["Id"] + string.Format("?{0}", queryStringText));

Razor以下のように構文を残します

@Html.GenerateLanguageLink()

これで問題が解決します。

于 2013-07-16T16:49:50.537 に答える