【问题标题】:Set value to input type="date" from codebehind将值设置为从代码隐藏中输入 type="date"
【发布时间】:2017-09-18 04:04:59
【问题描述】:

我想从 ASP.NET Web 应用程序中的 C# 代码隐藏为我的 HTML 标记 input type="date" 赋值。页面加载后,该值不可见,但在 chrome 开发工具中我可以看到该值:

ASPX:

<input type="date" runat="server" id="date_datumPrispetja" value="dd. MM. yyyy" />

代码隐藏:

string date = myDate.ToString("dd. MM. yyyy"); //value of date: "09. 04. 2017";
date_datumPrispetja.Value = date;

这是否可能,将代码隐藏中的值分配给这个 HTML5 元素?


编辑:

比较datetimedate 输入类型。 C#:

date_datumPrispetja.Value = DateTime.Now.ToString("dd. MM. yyyy");
hi.Value = DateTime.Now.ToString("dd. MM. yyyy");

ASPX:

<input type="date"  runat="server" id="date_datumPrispetja" value="dd. MM. yyyy"/>
<br />
<input type="datetime" runat="server" id="hi" value="dd. MM. yyyy" />

结果:

【问题讨论】:

    标签: c# asp.net html


    【解决方案1】:

    这对我有用。

    TextBox.Text = Convert.ToDateTime('01-01-2020').Date.ToString("yyyy-MM-dd");
    

    【讨论】:

      【解决方案2】:

      这对我有用:

      txtFechaOtorgamiento.Text = Format(servicio.FechaOtorgamiento, "yyyy-MM-dd");
      

      【讨论】:

        【解决方案3】:

        Mobile Safari、Firefox 和 Chromium 仅接受格式的日期值

        <input type="date" value="2017-04-27">
        

        并以本地化格式打印日期。如果他们获得本地化格式作为输入(例如“27.04.2017”),他们只会打印占位符。

        然而 Safari 接受

        <input type="date" value="27.04.2017">
        

        另一方面,如果 Safari 获取输入格式“2017-04-27”,它将以非本地化形式打印此值。

        在浏览器的 DOM 中,输入值存储属性 defaultValue(所有浏览器为 true),属性 value 为空(Safari 不为 true)。

        我对这种混乱的解决方法是一些 javascript:

        $(function () {
            var datefields = $('.TTMMJJ')
            for (i = 0; i < datefields.length; i++) {
                datefields[i].type = "date";
                var defaultVal = datefields[i].defaultValue;
                var val = datefields[i].value;
                if (defaultVal.length > 0 && val.length == 0) {
                    var darr = defaultVal.split(".");
                    if (darr.length == 3) {
                        var year = darr[2];
                        var month = darr[1];
                        var day = darr[0];
                        if (year.length == 2) {
                            year = "20" + year;
                        }
                        var s = year + '-' + month.padStart(2,0) + '-' + day.padStart(2,0);
                        datefields[i].value = s;
                    }
                }
            }
        });

        注意

        Date.parse("27.04.2017") 
        

        适用于 Chromium,但不适用于 Firefox。

        【讨论】:

          【解决方案4】:

          我觉得应该可以了,你把这段代码放在哪里了:

          string date = myDate.ToString("dd. MM. yyyy"); //value of date: "09. 04. 2017";
          date_datumPrispetja.Value = date;
          

          Page_Load()?

          我的测试代码如下:

          protected void Page_Load(object sender, EventArgs e)
              {
                  hi.Value = DateTime.Now.ToString("yyyy-MM-dd");
              }
          

          然后效果很好。

          【讨论】:

          • 你能告诉我你在你的aspx中的&lt;input&gt;元素定义吗?
          • 当然。
          • 我需要在同一输入中使用日期选择器,所以日期时间对我不起作用。
          • 类型无关紧要。我将类型更改为日期并仍然获得当前的体验。
          • 啊哈,我找到了根本原因。你应该使用:DateTime.Now.ToString("yyyy-MM-dd");而不是 DateTime.Now.ToString("dd.MM.yyyy");在 Page_Load。查看更多详情:stackoverflow.com/questions/14212527/…
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-12-22
          • 2011-02-10
          • 1970-01-01
          • 2013-03-17
          • 2023-03-10
          相关资源
          最近更新 更多