我正在使用 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/