.NET MVC4 UrlHelper Action返回所有小写路由值

时间:2013-05-31 10:45:21

标签: .net asp.net-mvc asp.net-mvc-4 routes

给出以下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;
}

我的对象(r​​outeValues)上有一个属性,它是一个api密钥。当我从AbsoluteAction获得值时,我会期望http://www.mysite.com/controller/action?apikey=PassWord1234,但我得到http://www.mysite.com?/controller/action/apikey=password1234。它似乎是导致问题的.NET UrlHelper Action方法,但我认为无法指定“保留原始外壳”。

思想?

1 个答案:

答案 0 :(得分:2)

不,Url.Action助手不会自动小写值。

假设默认路由设置,请执行以下调用:

string url = Url.Action("foo", "bar", new { apikey = "PassWord1234" });

产生

/bar/foo?apikey=PassWord1234

也许您正在使用一些可能导致此行为的自定义路由,但开箱即用ASP.NET MVC绝对不会这样做。