1

在我的 ASP.NET MVC 4 应用程序中,我使用从StackOverflow 帖子中获取的以下 JAX 代码将日期参数传递给控制器​​,但我收到以下 http 404 错误:“您正在寻找的资源已被删除,名称已更改,或暂时不可用。请求的 URL /myWebApp/myController/myAction/01/01/2014/12/31/2014"

这里输入控件 txtFrom 和 txtTo 的值分别为 01/01/2014 和 12/31/2014。问题是 MVC 可能将每个日期解释为三个不同的参数。我们怎样才能解决它。我尝试用 $('#txtFrom').val().replace("///g", "_") 替换 $('#txtFrom').val() 但它不起作用。

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
}
4

2 回答 2

1

您可以使用 Razor 格式化日期字符串

@HttpUtility.UrlEncode(date)

用 javascript

encodeURIComponent(date)

或将日期作为刻度(自纪元以来的毫秒数)而不是人类可读的格式传递。

编辑:

在对此进行了试验并进行了一些研究之后,似乎斜线和%2f编码会导致各种问题。坚持日期的毫秒表示,不要担心传递斜线。

于 2014-03-24T21:44:03.877 回答
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 文档

于 2014-03-25T10:22:47.547 回答