2016-03-10 2 views
2

Я использую MVC 3, я передаю некоторые URL в свойстве типа строки, для этого я использовалДобавить ссылку в модели

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

Но он дает ошибку. который

{ "Значение не может быть пустым \ г \ nParameter имя:. RouteCollection"}

я знаю .action (ActionName, controllerName, routeValues, схемы); имеет четыре параметра, но я хочу только передать два, что будет по умолчанию для него?

+0

Я также пробовал это, но все же он дает ошибку "{" Значение не может быть пустым. \ R \ nПараметр: routeCollection "}" var uri = new UrlHelper(). Действие ("Имя_файла", "Имя_контроллера" , новый RouteValueDictionary (новый {Id = 4})); –

ответ

1

я искал его и нашел ответ. Same Question

вар = новый URI UrlHelper (HttpContext.Current.Request.RequestContext) .action ("ActionName", "ControllerName");

Он работает нормально после добавления HttpContext.Current.Request.RequestContext.

2

Если вы внутри Controller, вы используете статический Url.Action() вместо этого, и он будет работать:

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

И если вы за пределами Controller (например, в вашем Model) вы должны использовать UrlHelper, как вы это делали, но передавая параметр Context в параметр, поэтому метод может сделать правильный URL-адрес для вас.

Вы можете получить контекст запроса следующим образом:

HttpContext.Current.Request.RequestContext 

Так что, если вы можете использовать его как это:

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

Я знаю об этом. Но на этот раз я использую его в модели для создания строки. Вот почему я использую его таким образом ... –

Смежные вопросы