无法获取查询字符串数据

时间:2018-07-23 14:13:02

标签: javascript c# asp.net-core request query-string

我正在尝试从JavaScript到控制器获取两个查询字符串参数。这是代码:

JavaScript

var startDate = "",
    enddate = "";

var startDate = $.datepicker.formatDate(dateFormat, $("#startDate").datepicker('getDate'));
var enddate = $.datepicker.formatDate(dateFormat, $("#endDate").datepicker('getDate'));

if (startDate != "" || enddate != "") {
  window.location = `${window.location.href}/Index?startDate=${startDate}&endDate=${enddate}`;

}

C#

public IActionResult Index([FromQuery(Name = "startDate")] string startDate = "", [FromQuery(Name = "endDate")] string endDate = "") 
{    
}

控制器被调用,第一个参数为fin,但是第二个参数获取URL的混乱版本。这是一张照片。我很难弄清楚自己在做什么错。

JavaScript值

enter image description here

C#值

enter image description here

2 个答案:

答案 0 :(得分:3)

从您发布的内容看来,windows.location.href可能是问题所在,您正在连接到URL中已经存在的值。例如,如果您的href是

http://www.somesite/Index?startDate=1&endate=2

那么您的串联字符串将是:

http://www.somesite/Index?startDate=1&endate=2/Index?startDate=1&endDate=2

,您的值为:

startDate: 1
endDate: 2/Index/startDate=1

要解决此问题,您可以尝试使用window.location.hostname代替href。

更新

我认为您应该使URL相对:

window.location = `/Index?startDate=${startDate}&endDate=${enddate}`;

答案 1 :(得分:0)

我通过删除网址中的“索引”解决了该问题。如果URL中缺少Action,则MVC框架会自动搜索“索引” ActionResult。

window.location = `Salaries?startDate=${startDate}&endDate=${endDate}`;

它也可以这样工作:

window.location = `?startDate=${startDate}&endDate=${endDate}`;