【发布时间】:2018-12-17 12:03:25
【问题描述】:
我有一个 Web API 和一个非常快速的页面,我拼凑在一起测试它(调用 API 的实际页面是/将由外部供应商编写)。
我的搜索操作有几个参数,所有这些都是可选的,应该默认为空字符串。
[ActionName("Search")]
public IEnumerable<Foo> Get(string param1 = "", string param2 = "", string param3 = "")
以及调用 API 的 View:
@using (Ajax.BeginForm(new AjaxOptions {
Url = ViewBag.APIUrl + "api/controller/Search",
HttpMethod = "GET",
OnSuccess = "successful" }))
{
@Html.TextBox("param1")
@Html.TextBox("param2")
@Html.TextBox("param3")
}
GET 请求如下所示
[...]/Search?param1=¶m2=¶m3=
表单上的每个空值都作为 null 传递给 API 控制器,因此不使用空字符串的默认值。 (它确实按预期传递了实际值。)事实上,我在事后将它们合并为空字符串,但这个 API 的旧版本不必这样做。
当我添加时
int skip = 0, int take = 0
作为参数,我得到了
参数字典包含一个空条目
异常。我知道这可以通过使这些参数为空,然后像字符串一样将它们合并为空来解决。但就目的而言,它们不应该是可空的,它们应该是可选的,具有默认值。
如何让它使用动作中参数的默认值?我是在表单中还是在 API 控制器中做错了什么?
【问题讨论】:
标签: asp.net-web-api2 asp.net-ajax optional-parameters