在模型

时间:2016-03-10 16:48:47

标签: asp.net-mvc asp.net-mvc-3

我正在使用MVC 3,我在字符串类型属性中传递了一些url, 为此,我使用了

var uri = new UrlHelper().Action("ActionName", "ControllerName");

但它给出了错误。

  

{“值不能为空。\ r \ nParameter name:routeCollection”}

我知道 .Action(actionName,controllerName,routeValues,scheme); 有四个参数,但我只想传递两个,它的默认值是什么?

2 个答案:

答案 0 :(得分:3)

如果您在Controller内,则使用静态Url.Action(),它会起作用:

var uri = Url.Action("ActionName", "ControllerName");

如果您不在Controller之外(例如在您的Model中),则必须像使用UrlHelper一样使用HttpContext.Current.Request.RequestContext ,但在参数中传递一个Context,所以该方法可以为您制作正确的网址。

您可以通过以下方式获取请求上下文:

UrlHelper url = new UrlHelper(HttpContext.Current.Request.RequestContext);
var uri = url.Action("ActionName", "ControllerName");

所以,如果你能像这样使用它:

{{1}}

答案 1 :(得分:1)

我搜索了它并找到了答案。 Same Question

var uri = new UrlHelper(HttpContext.Current.Request.RequestContext).Action(“ActionName”,“ControllerName”);

添加 HttpContext.Current.Request.RequestContext 后,工作正常。