【发布时间】:2014-02-27 17:02:45
【问题描述】:
我有一个 Web API 应用程序,它预计会为患者返回一个临床警报列表。使用以下 URL 调用请求
http://myserver:18030/api/Alerts/search?systemId=182&patientId=T000282L
其中 systemId 确定与患者 ID 值相关的临床信息系统。路由在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();
}
我的印象是 QueryString 参数会自动映射到操作方法参数,但在此示例中,patientId 始终为 null(或我默认提供的空字符串)。我尝试在 action 方法内的代码中读取 QueryString,但它只有一个具有 key systemId 的成员。
为什么不传递第二个参数?
我可以通过使用 patientId=182:T000282L 的 QueryString 然后解析这个复合键来解决它,但我希望最终能够搜索多个参数,因此可能需要访问第三个甚至第四个值来自查询字符串。
【问题讨论】:
-
如果从
GetAlerts()参数中删除默认值会怎样? -
如果我这样做,参数为空
-
两个参数,或者只是
patientId? -
第二个。如果我颠倒 URL 中参数的顺序,它仍然是第二个为空的参数。
-
此时,我建议尝试一个简单的项目,确保多个参数在那里工作,然后添加您的自定义路由和操作属性。从this 之类的内容开始。
标签: c# query-string asp.net-web-api