asp.net-web-api – 从asp.net web api定制odata输出
发布时间:2020-12-16 04:35:00 所属栏目:asp.Net 来源:网络整理
导读:我正在使用新的ASP.NET webapi odata(版本4.0.0,根据Nuget上次发布于2013年2月27日) 基本上我按照这里描述的那样做:http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api 我正在发布我的数据传输对象,并创建了odata atom pub feed,但我想
我正在使用新的ASP.NET webapi odata(版本4.0.0,根据Nuget上次发布于2013年2月27日)
基本上我按照这里描述的那样做:http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api 我正在发布我的数据传输对象,并创建了odata atom pub feed,但我想对它有更多的控制权.主要是我希望能够做到以下几点: >确定Feed的标题,作者和更新元素的内容 解决方法
OData媒体类型格式化器现在更具扩展性.样品如下.
1)决定Feed的标题,作者和更新元素的内容 public class AtomMetadataFeedSerializer : ODataFeedSerializer { public AtomMetadataFeedSerializer(IEdmCollectionTypeReference edmType,ODataSerializerProvider serializerProvider) : base(edmType,serializerProvider) { } public override ODataFeed CreateODataFeed(IEnumerable feedInstance,ODataSerializerContext writeContext) { ODataFeed feed = base.CreateODataFeed(feedInstance,writeContext); feed.Atom().Title = new AtomTextConstruct { Kind = AtomTextConstructKind.Text,Text = "My Awesome Feed" }; return feed; } } public class CustomSerializerProvider : DefaultODataSerializerProvider { public override ODataEntrySerializer CreateEdmTypeSerializer(IEdmTypeReference edmType) { if (edmType.IsCollection() && edmType.AsCollection().ElementType().IsEntity()) { // feed serializer return new AtomMetadataFeedSerializer(edmType.AsCollection(),this); } return base.CreateEdmTypeSerializer(edmType); } } 并使用注册自定义序列化程序提供程序, config.Formatters.InsertRange(0,ODataMediaTypeFormatters.Create(new CustomSerializerProvider(),new DefaultODataDeserializerProvider())); 2)自定义编辑链接 public class CustomEntityTypeSerializer : ODataEntityTypeSerializer { public CustomEntityTypeSerializer(IEdmEntityTypeReference edmType,serializerProvider) { } public override ODataEntry CreateEntry(EntityInstanceContext entityInstanceContext,ODataSerializerContext writeContext) { ODataEntry entry = base.CreateEntry(entityInstanceContext,writeContext); if (notProduceEditLinks) { entry.EditLink = null; } return entry; } } public class CustomSerializerProvider : DefaultODataSerializerProvider { public override ODataEntrySerializer CreateEdmTypeSerializer(IEdmTypeReference edmType) { if (edmType.IsEntity()) { // entity type serializer return new CustomEntityTypeSerializer(edmType.AsEntity(),this); } return base.CreateEdmTypeSerializer(edmType); } } 并如上所述注册自定义序列化程序提供程序. 我们仍然不支持方案3,即别名类型名称和命名空间. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – 在显示模板中使用DisplayFor
- asp.net中的多线程
- asp.net-mvc – 使用ASP.net MVC项目作为其他MVC项目的“基
- .net – TransactionScope:它变得更好了吗?
- iis – 如何通过预编译ASP.NET站点来确定性能改进?
- asp.net – 是否有可能拒绝通过Microsoft Ajax Minifier在c
- asp.net – 在自定义声明中保留用户安全配置文件数据
- asp.net-mvc – 如何组合两个dataTextFields的SelectList描
- asp.net-mvc – 保持asp.net mvc控制器的大小
- 从asp.net代码后面读表单认证cookie
推荐文章
站长推荐
- asp.net-mvc – 在ASP.NET MVC3 Razor的渲染时间
- asp.net – 如何正确编码mailto链接?
- ASP.NET开发人员试图学习Drupal和PHP
- 如何在ASP.NET MVC中配置3个级别的URL?
- ASP.NET MVC 4和Razor 2:View引擎不再支持xml?
- asp.net mvc强类型视图模型与multiselect
- ASP.NET:将ViewState移动到页面底部
- asp.net-mvc – 具有IE条件注释的MVC4捆绑/缩小
- asp.net-mvc-2 – MVC的DataAnnotationsModelMet
- asp.net-mvc-3 – 强制重新验证mvc3不显眼的远程
热点阅读