将值设置为从代码隐藏中输入 type="date"
Posted
技术标签:
【中文标题】将值设置为从代码隐藏中输入 type="date"【英文标题】:Set value to input type="date" from codebehind 【发布时间】: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 元素?
编辑:
比较datetime
和date
输入类型。
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" />
结果:
【问题讨论】:
【参考方案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中的<input>
元素定义吗?
当然。
我需要在同一输入中使用日期选择器,所以日期时间对我不起作用。
类型无关紧要。我将类型更改为日期并仍然获得当前的体验。
啊哈,我找到了根本原因。你应该使用:DateTime.Now.ToString("yyyy-MM-dd");而不是 DateTime.Now.ToString("dd.MM.yyyy");在 Page_Load。查看更多详情:***.com/questions/14212527/…以上是关于将值设置为从代码隐藏中输入 type="date"的主要内容,如果未能解决你的问题,请参考以下文章
将值设置为 <input type="number" /> 中的货币
即使 col_type 设置为字符时,read_delim 也会将值转换为 sci 表示法