【问题标题】:Data Service Reflection Provider in ASP.NET MVCASP.NET MVC 中的数据服务反射提供程序
【发布时间】:2011-11-28 09:54:01
【问题描述】:

我有一个现有模型,其中包含从磁盘上的多个文件中读取模型的类。我在当前的 ASP.NET MVC 项目中使用它并从磁盘读取正确的文件,处理读取的类需要 version URL 参数和 Request.PhysicalApplicationPath 参数。当我在 ASP.NET MVC 控制器中并且有 Request 对象和传入的参数形成 URL 时,这很容易。

然而,当我想使用数据服务类来公开我的模型时,我首先需要能够将相同的 URL 参数和请求对象发送到类以读取模型。当我在我的 svc 文件中时,我不知道我应该如何访问 URL 参数和 Request 对象,或者我应该如何使用我必须的 get 属性将它们获取到“context”对象阅读我的模型?

更新: 我希望有类似下面的内容,其中“23456”将是版本号,我可以将其转发给从磁盘读取模型的类,其余的是我传递给 DataService 的查询来实现它的魔力。

http://MySite/23456/MyService/Category(1)/Products?$top=2&$orderby=name

所以基本上 - 是否可以同时使用 MVC 进行路由和参数控制等,然后将查询的其余部分传递给 DataService 以获得询问基于 URL 的问题的完全灵活性?

【问题讨论】:

    标签: asp.net-mvc c#-4.0 odata wcf-data-services


    【解决方案1】:

    我认为您在问如何将控制器中可用的一些特定于上下文的数据提供给底层服务(在本例中为数据服务)。

    通常,更简单和最直接的方法是让控制器负责提取特定于上下文的数据并将其作为标准方法参数转发给服务。

    您当前的情况是否存在阻止您在控制器中获取 Version 和 Url 数据并将它们传递到服务层的情况?

    【讨论】:

    • 但是我必须使查询“静态”,例如让我进入前 100 名或按类别。有没有办法将灵活性与 DataService 和 MVC 的路由/参数处理结合起来?
    • 这取决于您处理数据层的方式,但如果它满足您的需求,您的数据层可以返回一个 IQueryable,这可以通过添加来自 HttpContext 或其他的附加约束,例如 Version 和 Url。
    猜你喜欢
    • 2012-07-11
    • 2012-02-25
    • 2012-02-09
    • 1970-01-01
    • 2020-05-11
    • 1970-01-01
    • 2010-09-18
    • 1970-01-01
    • 2011-04-18
    相关资源
    最近更新 更多