在我的ASP.NET MVC 4应用程序中,我使用从此StackOverflow post获取的以下JAX代码将Date参数传递给控制器,但是我收到以下http 404错误:&#34 ;您要查找的资源已被删除,名称已更改或暂时不可用。请求的URL / myWebApp / myController / myAction / 01/01/2014 / 12/31/2014"
此处输入控件txtFrom和txtTo分别具有值01/01/2014和12/31/2014。问题是MVC可能将每个日期解释为三个不同的参数。我们如何解决它。我尝试用$(' #txtFrom')替换$(' #txtFrom')。val()。val()。replace(" /// g" ," _")但它不起作用。
window.location.href = '@Url.Action("myAction")/' + $('#txtFrom').val() + '/' + $('#txtTo').val();
操作方法:
public ActionResult myAction(string startDate, string endDate)
{
//simple code here to use the input parameters
}
答案 0 :(得分:1)
您可以使用Razor格式化日期字符串
@HttpUtility.UrlEncode(date)
使用javascript
encodeURIComponent(date)
或将日期作为刻度(自Epoch以来的毫秒)传递,而不是以人类可读的格式传递。
修改强>
在尝试了这个和一些研究后,似乎斜线和%2f
编码会导致各种问题。坚持毫秒表示日期而不用担心传递斜线。
答案 1 :(得分:0)
window.location.href 不是ajax。它是您的浏览器向URL发送HTTP请求。在你的情况下,它不是一个完整的网址,而是一个部分;因此错误。您可以尝试以下操作开始。用输入替换日期的硬编码值
$.getJSON({‘@Url.Action("myAction")’ + '/', { startDate: ‘1/1/2001’, endData: ‘1/2/2002’ }});
如果要处理任何返回值;请参阅有关$ .getJSON(http://api.jquery.com/jquery.getjson/)
的jquery文档