无法看到为什么带有2个日期参数的控制器方法不起作用

时间:2018-08-12 14:39:24

标签: asp.net-web-api model-view-controller asp.net-mvc-5 asp.net-web-api2

我有一个非常奇怪而令人沮丧的问题

我有一个带有标准Web Api控制器的控制器

<input
  type="checkbox"
  checked={ui_store.final_social_media_site_selections[social_media_site]}
  name={social_media_site}
  className={ checkbox_style }
  onChange={() => ui_store.reverse_checkbox_state(social_media_site)}
/>

当我使用参数调用方法

[Route("Gateway/[Controller]/[action]")]
public class MyController: Controller
{
    public MyController()
    {
    }

    [ActionName("MyMethod")]
    [System.Web.Http.HttpGet]
    public async Task<IActionResult> MyMethodAsync(int numberParam, DateTime? startDate, DateTime? endDate)
    {

        var parameters = $"numberParam={numberParam}";
        if (startDate != null)
        {
            parameters += $"&startDate={startDate.Value:O}";
        }

        if (endDate != null)
        {
            parameters += $"&endDate={endDate.Value:O}";
        }

//My logic here - not relevant for question

        return result;
    }
}

endDate为空

这是为什么?

没有错误,我不知道为什么第二个参数被忽略

这与日期格式无关吗?

我不需要时间

使用完整网址(例如http://mysite/GatewayController/MyMethod?numberParam=1&startDate=01/01/2018&endDate=31/01/2018

)时会发生这种情况

我也通过HttpClient调用它,这也不起作用

?numberParam=1&startDate=01/01/2018&endDate=31/01/2018

保罗

1 个答案:

答案 0 :(得分:1)

通过将“ /”替换为“-”来创建不含特殊字符“ /”的网址 ?numberParam = 1&startDate = 01-01-2018&endDate = 31-01-2018

或 对特殊字符进行编码,

https://www.w3schools.com/jsref/jsref_encodeURI.asp https://www.w3schools.com/jsref/jsref_encodeURIComponent.asp