我有一个扩展方法,它返回一个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()))