2011-09-22 95 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