html5输入类型日期时间值未在ASP.NET webform上显示

发布时间:2021-10-06 发布网站:前端之家 F2er.com
前端之家收集整理的这篇文章主要介绍了html5输入类型日期时间值未在ASP.NET webform上显示前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
编辑
我有一个Asp.Net FormView,带有itemtemplate:

<asp:TemplateField HeaderText="DateStart" SortExpression="DateStart">
                    <EditItemTemplate>
                        <asp:TextBox ID="TextBoxEditStageDetailsDateStart" type="datetime-local" runat="server"
                            Text='<%# Bind("DateStart") %>' CssClass="TextBoxDateTime"></asp:TextBox>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="Label1" runat="server" Text='<%# Bind("DateStart") %>'></asp:Label>
                    </ItemTemplate>
                    <ControlStyle Width="160px" />
                </asp:TemplateField>

当表单处于查看模式时,日期正确显示(当然设置日期时):

但是,当表单在编辑模式下更改时,显示type =“datetime-local”的输入但是为空,需要用户选择新日期.这是Popup显示的:

但是,正如我所看到的那样检查生成的html源代码,正确设置了值…

<input name="ctl00$MainContent$StageDetailsView$TextBoxEditStageDetailsDateStart" value="28/05/2013 10:00:00" id="MainContent_StageDetailsView_TextBoxEditStageDetailsDateStart" class="TextBoxDateTime" type="datetime-local" style="width:160px;">

所以有两个问题:
首先是在编辑模式下,我无法看到实际值是什么;
第二,如果我只想改变一天或一小时,我必须重新输入整个日期……

我的问题是:这是Html5计划的行为还是我遗漏了什么?

解决方法

根据 W3 specification

value = local date and time

A string representing a local date and time. The following parts,in
exactly the following order
:

  • A date.
  • The literal string “T”.
  • A time.

Example:

1985-04-12T23:20:50.52

1996-12-19T16:39:57

所以,在你的情况下:

value="2013-05-28T10:00:00"

将工作.

[UPDATE]

您可以使用以下aspx标记:

<asp:TemplateField HeaderText="DateStart" SortExpression="DateStart">
    <EditItemTemplate>
        <asp:TextBox ID="TextBoxEditStageDetailsDateStart" type="datetime-local" runat="server"
            Text='<%# GetFormattedDate(Eval("DateStart")) %>' CssClass="TextBoxDateTime"></asp:TextBox>
    </EditItemTemplate>
    <ItemTemplate>
        <asp:Label ID="Label1" runat="server" Text='<%# Bind("DateStart") %>'></asp:Label>
    </ItemTemplate>
    <ControlStyle Width="160px" />
</asp:TemplateField>

在您的代码中,定义以下方法:

protected string GetFormattedDate(object dateTimeObject)
{
    DateTime dateTime;
    if (DateTime.TryParse(dateTimeObject.ToString(),out dateTime))
    {
        return String.Format("{0}-{1}-{2}T{3}:{4}:{5}",dateTime.Year,dateTime.Month.ToString().PadLeft(2,'0'),dateTime.Day.ToString().PadLeft(2,dateTime.Hour.ToString().PadLeft(2,dateTime.Minute.ToString().PadLeft(2,dateTime.Second.ToString().PadLeft(2,'0')
            );
    }
    return null;
}

总结


以上是前端之家为你收集整理的html5输入类型日期时间值未在ASP.NET webform上显示全部内容,希望文章能够帮你解决html5输入类型日期时间值未在ASP.NET webform上显示所遇到的程序开发问题。

如果觉得前端之家网站内容还不错,欢迎将前端之家网站推荐给前端开发程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。