给出以下UrlHelper扩展方法:
public static string AbsoluteAction(this UrlHelper url, string action, string controller, object routeValues)
{
Uri requestUrl = url.RequestContext.HttpContext.Request.Url;
string absoluteAction =
string.Format("{0}://{1}{2}",
requestUrl.Scheme,
requestUrl.Authority,
url.Action(action, controller, routeValues));
return absoluteAction;
}
我的对象(routeValues)上有一个属性,它是一个api密钥。当我从AbsoluteAction获得值时,我会期望http://www.mysite.com/controller/action?apikey=PassWord1234,但我得到http://www.mysite.com?/controller/action/apikey=password1234。它似乎是导致问题的.NET UrlHelper Action方法,但我认为无法指定“保留原始外壳”。
思想?
答案 0 :(得分:2)
不,Url.Action
助手不会自动小写值。
假设默认路由设置,请执行以下调用:
string url = Url.Action("foo", "bar", new { apikey = "PassWord1234" });
产生
/bar/foo?apikey=PassWord1234
也许您正在使用一些可能导致此行为的自定义路由,但开箱即用ASP.NET MVC绝对不会这样做。