我正在尝试从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}`;
}
public IActionResult Index([FromQuery(Name = "startDate")] string startDate = "", [FromQuery(Name = "endDate")] string endDate = "")
{
}
控制器被调用,第一个参数为fin,但是第二个参数获取URL的混乱版本。这是一张照片。我很难弄清楚自己在做什么错。
JavaScript值
C#值
答案 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}`;