首页>Program>source

如何通过URL传递日期?

这是我要尝试的操作,因为您会看到该日期使用了在URL中无效的正斜杠

http://localhost/Controller/Action/id=0d5375aa-6d43-42f1-91f0-ea73d9beb361&date=02/12/2009
最新回答
  • 11天前
    1 #

    您可以使用特定格式(例如yyyymmdd)在查询字符串中传递日期,然后在Controller中正确解析该日期。

    &date=02/12/2009
    change to
    &date=20091202   (yyyymmdd)
    

    您可以围绕使用此新格式实例化的DateTime对象创建包装器,也可以自己在Controller中解析它。

    public MyWrapperDate(int date)
    {
        int year = date / 10000;
        int month = ((date - (10000 * year)) / 100);
        int day = (date - (10000 * year) - (100 * month));
        this.DateTimeObject = new DateTime(year, month, day);
    }
    

  • 11天前
    2 #

    ISO 8601标准是yyyy-MM-dd,它是明确的并且不包含任何无效的URL字符,并且在DateTime.Parse / TryParse中可以正常工作。

    另一种选择是使用所需的任何格式,并仅使用HttpServerUtility.UrlEncode / UrlDecode对URL进行编码。

  • 11天前
    3 #

    您可以对其进行URL编码,但是将DateTime作为字符串传递总是有点麻烦 这很棘手,因为如果请求跨越文化边界,您可能会遇到解析错误。

    一个更好的选择是将DateTime转换为Ticks并传递该数字。

  • 11天前
    4 #

    MVC在生成URL和绑定模型时使用当前的区域性.在某些情况下(例如当您有文本框并且用户在此处输入日期时),这很有意义,但是通常会出现问题.如果您有不同的文化,那么值始终采用不变文化的格式会更容易。

    在您的情况下,我会将值作为不变文化呈现的字符串传递.然后,我将使用CustomModelBinder来填充模型中的属性。

  • svg:使用d3 JavaScript库时,在路径上的特定点放置箭头(标记)
  • 在JavaScript中找出字串之间的差异