将值设置为输入类型="日期"来自codebehind

时间:2017-04-21 08:38:41

标签: c# asp.net html5

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

enter image description here

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" />

结果:

enter image description here

4 个答案:

答案 0 :(得分:6)

我认为它应该是有用的,你把这段代码放在哪里:

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");
    }

然后它运作良好。

答案 1 :(得分:1)

这对我有用。

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

答案 2 :(得分:0)

移动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不适用)。

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

$(function () {
    var datefields = $('input[type=date]')
    for (i = 0; i < datefields.length; i++) {
        var defaultVal = datefields[i].defaultValue;
        var val = datefields[i].value;
        if (defaultVal.length > 0 && val.length == 0) {
            var parsed = Date.parse(defaultVal);
            var d = new Date(parsed);
            if (isNaN(d)) {
                var darr = defaultVal.split(".");
                if (darr.length == 3) {
                    d = new Date(darr[2], darr[1] - 1, darr[0]);
                }
            }
            var y = d.getFullYear();
            var m = d.getMonth()+1;
            var d = d.getDay();
            var s = y.toString() + '-' + m.toString().padStart(2,0) + '-' + d.toString().padStart(2,0);
            datefields[i].value = s;
        }
    }
});

请注意

Date.parse("27.04.2017") 

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

答案 3 :(得分:0)

这对我有用:

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