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()))