ServiceStack AutoQuery MVC控制器

时间:2014-08-18 01:07:29

标签: asp.net-mvc servicestack

我在MVC中试验ServiceStack,使用标准服务器端控制器创建视图模型。在/ api注册的任何服务都没有jquery调用(或任何直接调用)。由于SS允许我们直接使用以下方法解决服务:

using (var dr = HostContext.ResolveService<DataReportService>(base.HttpContext))

我还没有使用JsonServiceClient调用服务。相反,我一直在解决服务并直接调用他们的方法。

var dataReport = new DataReport
{
   IsArchived = false,
   ReportDate = DateTime.Now,
   ReportType = Model.ReportType
};
var drId = dr.Post(dataReport);

但是,我无法使用新的AutoQuery功能找到一种方法。我知道它会自动为任何来自QueryBase的类创建一个服务,但我没有运气解决它。如果我尝试解析运行时使用的名称,那么我就不会编译(显然)。如果我尝试这样的事情

using (var dr = HostContext.ResolveService<AutoQueryServiceBase>(base.HttpContext))

然后它也不会工作,因为那只是一个基类而不是实际注册的实例。我知道我可以从JsonServiceClient做到这一点,但我真的想尝试直接调用方法。创建我自己的包装任何AutoQuery的服务都可以工作,但似乎它违背了自动创建的目的。不过,我还没有看到任何其他方式继续下去。很想听到任何想法。

1 个答案:

答案 0 :(得分:2)

您可以使用ResolveService<T>方法来传递将在操作方法上执行的请求DTO,而不是使用HostContext.ServiceController.Execute方法获取服务并自行调用执行方法。 / p>

var dataReport = new DataReport
{
   IsArchived = false,
   ReportDate = DateTime.Now,
   ReportType = Model.ReportType
};
var drId = HostContext.ServiceController.Execute(dataReport);

我希望这会有所帮助。