asp.net-web-api – 从asp.net web api定制odata输出
发布时间:2020-05-24 09:57:53 所属栏目: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,即别名类型名称和命名空间. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 会员资格,SimpleMembership,ASP.NET身份之间有什么区别?
- asp.net-mvc-3 – 如何创建通用的MVC3编辑器模板?
- asp.net-mvc – Url.Action映射Route属性的错误链接
- asp.net-core – 使用Entity Framework 7处理乐观并发的最佳
- asp.net-mvc-2 – 如何设置RadioButtonFor()在ASp.net MVC
- asp.net – 如何.NET网站隐藏它们的文件的.aspx扩展名?
- asp.net-mvc – POST操作方法中强类型的ViewModel仅包含空值
- asp.net-mvc – 如何在ASP.NET MVC中使用编译的全局资源
- asp.net – 为什么IIS中的Windows /集成身份验证不会将用户
- asp.net-mvc – 将SignalR与Azure表存储一起使用 – 什么架
推荐文章
站长推荐
- asp.net-mvc – MVC Ajax.Beginform OnComplete
- asp.net-mvc – 如何修复错误名称空间’System’
- asp.net-mvc – TempData:安全吗?
- asp.net-mvc – 模型需要注入依赖项时的模型(Vie
- asp.net – 提高性能的最佳方法(并以某种方式包括
- asp.net-mvc – 将Castle Windsor与SignalR集成
- ASP.NET自定义错误页面HTTP响应
- asp.net – 检查表单是否有密钥?
- asp.net – On-Session-expire-event?
- asp.net-mvc – 可在LAN中远程访问的IIS页面,但不
热点阅读
