c# - UrlHelper.Action 抛出 ArgumentNullException

标签 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;
    }

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

所有参数都不是空值。

它一直在从 Task 方法中调用。

我也试过像这样获取上下文:

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

但是它 HttpContext.Current 向我返回 null。

最佳答案

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

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

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

参见 MSDN

关于c# - UrlHelper.Action 抛出 ArgumentNullException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31680707/

相关文章:

ruby-on-rails - Rails URL 生成器切换 http/https

asp.net-mvc - MVC 3 Url Helper 提供不正确的 URL

asp.net-mvc - ASP.NET MVC 中的模拟 Controller.Url.Action(string, string, object, string)

c# - 为什么这个循环不循环?

c# - AspNetCore (Kestrel) 请求超时

c# - VS(2010) 中的强制文档

javascript - 为什么 jquery ajax 调用 Controller 没有发现我的异常?

C# 堆栈推送调用问题

c# - MVC 应用程序中的应用程序根目录?

javascript - 在 foreach 循环中遍历一个元素并从值中提取首字母缩写词,然后将另一个元素的值设置为派生的首字母缩写词