ServiceStack将base.Request.Querystring作为另一个类的参数传递

时间:2015-08-03 16:49:35

标签: servicestack query-string

我已经实现了ServiceStack分页,部分响应,过滤等。我将所有可重用的方法放入RequestUtilities类。

我几乎在所有方法中都有base.Request.Querystring。 (必须访问检索属性,键,值等内容的请求。)

现在我需要从GET()内的XServices.cs访问它。我假设我需要传递base作为方法的参数来实现这一点。但到目前为止,我无法找到办法。这个base的类型是什么?如何将其作为参数传递?请指教。非常感谢。

来自RequestUtilities.cs

,例如 string qValue = base.Request.QueryString["q"].ToString();

将在XServices.cs中使用,例如:

int count = base.Request.QueryString.Count;

PS:如何在Stack Overflow上用突出显示的类名等装饰我的代码片段。我使用了Ctrl + k,但名称,方法等没有突出显示。

1 个答案:

答案 0 :(得分:2)

base.Request只引用从具有IRequest属性的类继承的任何类,即:

IRequest Request { get; }

主要是指你的Service基类,但是其他内置的ServiceStack类,如Razor Views以及基本的ASP.NET Page或ServiceStack Controller类,它们也提供对当前IRequest的访问。

IRequest就像任何其他实例变量一样,您需要将其传递给实用程序方法和帮助程序类(即来自您的服务),以便它们可以访问它。如果他们只是静态帮助方法而不是使用扩展方法更好,那么您可以通过以下方式从您的服务中调用它们:

var result = base.Request.MyCustomHelper(arg1);

有关IRequest扩展方法的示例,请参阅HttpRequestExtensions.cs

如果你在ASP.NET主机上,你也可以通过单例访问它:

HostContext.GetCurrentRequest();

但不建议这样做,因为它依赖于主机。