我尝试创建一个OData函数,该函数返回多个资源类型的引用列表(id / name值)。
每个参考文献还包含一个" ResourceUrl" property,具有资源的相对路径。
例如,这就是我想要看到的内容
{
"id": 4438,
"name": "Some Dude",
"resourceUri": "/odata/Users(4438)
},
当前我使用Url.Route("odata", new { controller = "users", id = user.Id })
但结果是返回null
。
包含该函数的控制器和UsersController都继承自ODataController。
我做错了什么?
答案 0 :(得分:3)
我能够通过稍微修改这个问题的答案来解决我的问题:How to Link to OData Collection in Razor using ASP.NET MVC Web API OData
我使用Url.Route而不是Url.HttpRouteUrl
扩展方法
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()))