2011-09-22 97 views
2

我想从使用Web服务的URL中提取一个id号,以便它可以用作选择语句中的where子句的参数根据记录的ID号码从数据库中产生数据。然后,这些数据将被传回到页面,以填充jQuery模式弹窗窗口中的元素。如何从.Net 4.0中的Web服务获取路由数据值

一切工作正常与静态身份证号码(例如:string postid = "120"),但我不知道如何从URL中获取ID号码。我在.Net 4中使用路由,访问页面路由的方法在Web服务中不起作用。在网页我做的东西一样var id = RouteData.Values["id"];,并且得到了ID,但是当我在一个Web服务做到了我得到了一个错误:

CS0120: An object reference is required for the non-static field, method, or property 'System.Web.Routing.RouteData.Values.get'

摘要:

我已经Web服务访问形式的详细信息页面我想在获取请求的页面上获得RouteData。我想尽可能简单地在页面上使用RouteData.Values,这与现在已过时的Request.Querystring一样简单。


现在我更困惑,因为虽然我可以很容易地添加新的路由为Web服务,我不知道我会打电话,使用,因为webservice.asmx /语法的WebMethod jQuery的阿贾克斯做。

现在我的URL:“../webservices/googlemaps.asmx/GetGoogleMap”在我的jQuery Ajax中,但这不是一个真正的URL。它只存在于某处的jQuery中,使用JavaScript调用服务的方式也不是真正的URL,它的webservice.webmethod()在这种情况下将是googlemaps.GetGoogleMap()

我会尝试注册webservices/googlemaps.asmx/GetGoogleMap/postid的路由,但我怀疑它会工作,因为GetGoogleMap不是目录或querystring

+0

你有没有控制的web服务?你能提供一些服务的例子,以及他们的声明吗? –

+0

要正确设置您的代码格式:选择代码中的*每行*,然后按工具栏上的'ctrl-K'或'{}'按钮 –

回答

6

获取当前http请求并使用RequestContext属性获取请求上下文 - 它当前有routing data。例如,

var id = HttpContext.Current.Request.RequestContext.RouteData.Values["id"]; 

在基于WCF Web服务的情况下,确保服务正在参加ASP.NET管道(见ASP.NET Compatibility

编辑:对不起,误导性的答案 - 上面不会有除非在路由引擎中注册了web服务url。但是,它可能无法解决您检索id的问题 - 您使用的是哪种服务实现?你正在做一个GET请求或POST请求?通常,Web服务处理程序(asmx)或WCF管道应将GET/POST参数转换为方法参数。发布您的Web服务代码以及如何调用它。

+0

@IAmLearnings,查看我的编辑。请发布您的Web服务代码以及如何调用它(通过编辑问题)! – VinayC