在asp.net 4.5中使用新的模型绑定来格式化日期字段

Joh*_*oge 8 asp.net-4.5 visual-studio-2012

在asp.net 4.5之前的旧时代,我们可以轻松地将日期绑定到Gridview,Formview或其他数据绑定控件,并使其看起来像一个简单的格式字符串.

            <asp:TextBox 
                ID="DateFieldTextBox" 
                runat="server" 
                Text='<%# Bind("DateField","{0:d}") %>'/>
Run Code Online (Sandbox Code Playgroud)

新的强类型模型绑定有点困难.

            <asp:TextBox 
                ID="DateFieldTextBox" 
                runat="server" 
                Text='<%# BindItem.DateField %>'/>
Run Code Online (Sandbox Code Playgroud)

将工作,但产生完整的日期/时间字符串而不仅仅是日期.

            <asp:TextBox 
                ID="DateFieldTextBox" 
                runat="server" 
                Text='<%# BindItem.DateField.ToShortDateString() %>'/>
Run Code Online (Sandbox Code Playgroud)

..这应该工作,但它产生编译时错误"BindItem的无效代码语法".Item.DateField.ToShortDateString()有效,但不会在回发上绑定.

现在我们已经恢复了原来的语法,但我们希望得到现代编译时检查,但仍然可以很好地格式化日期.之前有人遇到过这个吗?

Ana*_*and 2

要在网格视图中显示数据,您可以执行 Item.DateField.ToShortString() ,它将工作,因为它是一种数据绑定方式。也就是说,您正在显示记录中已有的内容。BindItem.DateField.ToDateString() 会将对象从 DateTime 转换为字符串,这将导致错误,正如您已经看到的那样。您可以在编辑字段或接受新条目时继续在表单视图中使用 Bind(表达式,格式)。