UrlHelper.Action抛出ArgumentNullException

时间:2015-07-28 15:23:31

标签: c# asp.net-mvc urlhelper

我正在使用UrlHelper生成一个URL,但是,当我调用方法Action(action,controller,route)时,我得到了ArgumentNullException。

UrlHelper urlHelper = new UrlHelper();

if (!string.IsNullOrEmpty(notificacao.NotAction))
{ 
     NotRequestUrl = urlHelper.Action("myAction", "myController", HMTLHelperExtensions.convertStringToRouteValueDictionary(myparameters));
} 

我创建了一个辅助函数,它为我创建了对象路由值(并且它正常工作)。

    public static RouteValueDictionary convertStringToRouteValueDictionary(string parametros)
    {
        RouteValueDictionary dicionario = new RouteValueDictionary();
        foreach (string parametro in parametros.Split(';'))
            if (parametro.Split('=').Count() == 2)
                dicionario.Add(parametro.Split('=')[0], parametro.Split('=')[1]);
        return dicionario;
    }

最奇怪的是,它已经在控制器内部工作,但是,它不能在单独的类中工作(如BusinessLayer / Facade)。

所有参数都不为空。

它一直在调用Task方法。

我也尝试过上下文:

UrlHelper urlHelper = new UrlHelper(HttpContext.Current.Request.RequestContext);

但是HttpContext.Current对我返回null。

1 个答案:

答案 0 :(得分:6)

您需要传递当前RequestContext。否则,它无法为您生成适当的URL,因为它缺少上下文:

UrlHelper urlHelper = new UrlHelper(this.Request.RequestContext);

默认(无参数)构造函数仅供单元测试使用(source)。

请参阅MSDN