我有一個Web API應用程序,預計會返回患者臨牀警報列表。該請求通過以下URL調用:Web API查詢字符串不傳遞第二個參數到控制器/操作
http://myserver:18030/api/Alerts/search?systemId=182&patientId=T000282L
其中systemId確定patientID值與其相關的臨牀信息系統。路由被設置爲在WebApiConfig.cs
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "Alertsapi",
routeTemplate: "api/Alerts/search",
defaults: new { controller = "Alerts" , action = "search"}
);
並且所述控制器操作如下如下:
[ActionName("search")]
public List<Alert> GetAlerts(string systemId = "", string patientId = "")
{
var alerts = from a in db.Alerts
where a.alertAuthorReference.Equals(systemId)
where a.alertSubjectReference.Equals(patientId)
select a;
return alerts.ToList();
}
我的印象是,查詢字符串參數,其中,自動映射到動作方法的參數,但在這個例子中,patientId總是空(或者是一個空字符串,因爲我默認提供這個空字符串)。我已經嘗試讀取操作方法內的代碼中的QueryString,但它只有一個具有密鑰systemId的成員。
爲什麼不通過第二個參數?
我可以通過使用patientId = 182:T000282L的QueryString解析這個組合鍵,但我希望最終能夠搜索多個參數,因此可能需要訪問第三個甚至第四個來自查詢字符串的值。
如果從'GetAlerts()'參數刪除您的默認值,會發生什麼? –
如果我這樣做的參數爲null –
這兩個參數,或只是'patientId'? –