大佬教程收集整理的这篇文章主要介绍了如何使用ASP.NET MVC Web API OData链接到Razor中的OData集合,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我没有使用单独的区域…这可能是一个错误,但我的应用程序很小,区域似乎有点过分.
我的控制器设置正确,我的Segments集合的示例路径(段是我的域中的类型)是“/ odata / Segments”.这按预期加载并正在工作.
在我的主页上,我正在尝试使用Razor的Html.ActionLink(或RouteLink)添加此资源的链接,但似乎OData控制器布局不能完全使用这些方法,因为控制器在注册时以“odata”为前缀WebAPIConfig:
config.Routes.MapODataRoute("OData Route","odata",model );
我可以通过假装有一个odata控制器来欺骗该方法来构造正确的url,当时肯定没有一个(据我所知)这样的东西:
@Html.RouteLink("Segments","Segments","odata")
但这似乎是一个黑客.
我不太了解ASP.NET路由管道,足以理解传递给MapODataRoute的前缀如何被合并到MVC链中,这样我就可以使用“正确”的剃刀方法“正确”.
只是为了踢,这是我的SegmentsController:
public class SegmentsController : EntitySetController<Segment,long> { private MarketerDB db = new MarketerDB(); // GET api/segments override public IQueryable<Segment> Get() { return db.Segments.AsQueryable(); } protected override Segment GetEntityByKey(long key) { return db.Segments.Find(key); } public IQueryable<Affiliate> GetAffiliates([FromODataUri] long key) { return this.GetEntityByKey(key).Affiliates.AsQueryable(); } protected override void Dispose(bool disposing) { db.Dispose(); base.Dispose(disposing); } }
namespace System.Web.Mvc { public static class UrlHelperExtensions { private static IODataPathHandler _pathHandler = new DefaultODataPathHandler(); public static String ODataUrl(this UrlHelper urlHelper,String routename,params ODataPathSegment[] segments) { String odataPath = _pathHandler.Link(new ODataPath(segments)); return urlHelper.httpRouteUrl( routename,new RouteValueDictionary() { { ODataRouteConstants.ODataPath,odataPath } }); } } }
通过做类似的事情从你的剃刀视图中调用它(假设有一个实体集客户,你想把导航链接放到客户的订单上(42)),
@Url.oDataUrl("odata",new EntitySetPathSegment("customers"),new KeyValuePathSegment("42"),new NavigationPathSegment("orders"))
以上是大佬教程为你收集整理的如何使用ASP.NET MVC Web API OData链接到Razor中的OData集合全部内容,希望文章能够帮你解决如何使用ASP.NET MVC Web API OData链接到Razor中的OData集合所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。