2017-02-16 56 views
0

Я пытаюсь создать функцию OData, которая возвращает список ссылок (значения id/name) для нескольких типов ресурсов.Как использовать Url.Route для маршрутов OData

Каждая ссылка также будет содержать свойство ResourceUrl с относительным путем к URL-адресу ресурса.

Например, это то, что я хочу видеть

{ 
     "id": 4438, 
     "name": "Some Dude", 
     "resourceUri": "/odata/Users(4438) 
    }, 

Ток я использую Url.Route("odata", new { controller = "users", id = user.Id }), но результат возвращается null.

Как контроллер, содержащий функцию, так и UserController наследует от ODataController.

Что я делаю неправильно?

ответ

0

Я был в состоянии решить мою проблему, слегка изменив ответ от этого вопроса: How to Link to OData Collection in Razor using ASP.NET MVC Web API OData

Вместо Url.HttpRouteUrl, я использую Url.Route

метод расширения

public static class UrlHelperExtensions 
{ 
    private static IODataPathHandler _pathHandler = new DefaultODataPathHandler(); 

    public static string ODataUrl(this UrlHelper urlHelper, string routeName, params ODataPathSegment[] segments) 
    { 
     var odataPath = _pathHandler.Link(new ODataPath(segments)); 
     return urlHelper.Route(routeName, new RouteValueDictionary() { { ODataRouteConstants.ODataPath, odataPath } }); 
    } 
} 

Использование

Url.ODataUrl("odata", new EntitySetPathSegment("Users"), new KeyValuePathSegment(u.UserId.ToString())) 

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

  • Нет связанных вопросов^_^