我有一个ASP.Net Core web api。 我使用IUrlHelper.Action生成一个完全限定的URL。 当我通过
Østjylland - 复制%*
它逃脱了Ø和空格而不是*
%C3%98stjylland%20-%20copy *
根据文件
不应转义任何字符。为什么会这样?我是否真的必须使用WebUtility首先解码来自UrlHelper的url,然后使用WebUtility再次对其进行编码以逃避所有特殊字符?
答案 0 :(得分:0)
来自here的类似答案对我有用。
public static MvcHtmlString ActionNoEscape(this HtmlHelper html, string actionName, string controllerName, object values)
{
RouteValueDictionary routeValues = new RouteValueDictionary(values);
UrlHelper urlHelper = new UrlHelper(html.ViewContext.RequestContext, RouteTable.Routes);
string url = urlHelper.Action(actionName, controllerName);
url += "?";
List<string> paramList = new List<string>();
foreach (KeyValuePair<string, object> pair in routeValues)
{
object value = pair.Value ?? "";
paramList.Add(string.Concat(pair.Key, "=", Convert.ToString(value, CultureInfo.InvariantCulture)));
}
url += string.Join("&", paramList.ToArray());
return new MvcHtmlString(url);
}
当然,我在.NET Framework中工作,但.NET Core的概念应该是相同的。希望这有帮助!