如何使用OData的Display.FormattedValue

时间:2019-06-25 18:18:08

标签: odata

我一直在尝试使用OData的Display.FormattedValue的功能,但是我找不到有关如何实现它的任何好资料。我已经在整个OData组织中搜索了代码(formattedvaluedisplayablevalue没有任何代码)。

我已经阅读了许多链接,包括以下内容:

但是我仍然不知道如何实现它。

有人知道吗?

1 个答案:

答案 0 :(得分:0)

答案非常简单。只需遵循the CustomODataFormatter example。在CustomODataSerializerProvider code中找到的AnnotatingEntitySerializer完成添加注释(在本例中为分数)的所有工作。可以轻松调整此代码以创建类似于OData.FormattedValue的内容。

// A custom entity serializer that adds the score annotation to document entries.
public class AnnotatingEntitySerializer : ODataResourceSerializer
{
    public AnnotatingEntitySerializer(ODataSerializerProvider serializerProvider)
        : base(serializerProvider)
    {
    }

    public override ODataResource CreateResource(SelectExpandNode selectExpandNode, ResourceContext resourceContext)
    {
        ODataResource entry = base.CreateResource(selectExpandNode, resourceContext);

        Document document = resourceContext.ResourceInstance as Document;
        if (entry != null && document != null)
        {
            // annotate the document with the score.
            entry.InstanceAnnotations.Add(new ODataInstanceAnnotation("org.northwind.search.score", new ODataPrimitiveValue(document.Score)));
        }

        return entry;
    }
}