我有一个n层应用程序。我已经将后端的内部类型与要在前端的webApi中公开的内部类型之间的模型分离。

我正在尝试使用ODataQueryOptions在前端中使用查询,我面临的问题是前端不知道我模型的属性。有没有一种通用的方法可以将我在webApi中公开的前端名称转换为ODataQueryOptions所需的内部属性名称?

即我可以使用此代码从查询中获取属性名称。

 ODataQueryOptions<MyModel> queryString;
 if (queryString.OrderBy != null && queryString.OrderBy.OrderByClause != null)
 {
     foreach (OrderByNode node in queryString.OrderBy.OrderByNodes)
     {
         OrderByPropertyNode typedNode = node as OrderByPropertyNode;
     }
 }


我在做下面的工作公开我的模型。

public class MyModel
{
    /// <summary>
    /// Gets or Sets Name
    /// </summary>
    [DataMember(Name = "name", EmitDefaultValue = false)]

    public string Name { get; set; }
 }


当我从前端查询时,我想按以下方式进行操作,因为这是我的webApi返回的内容。

 http://localhost:8888/myModel?$orderby=name desc


但是现在我必须使用大写字母,因为它与后端耦合

http://localhost:8888/jobs?$orderby=Name desc


我必须手动编写属性之间的转换吗?还是有办法实现这一目标?

最佳答案

您正在使用System.Web.Http.OData还是System.Web.OData?
如果使用System.Web.OData,则已经实现了名称别名,您可以轻松进行所需的操作。

关于c# - 将OData查询转换为DataContract模型类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42904413/

10-10 00:47
查看更多