【发布时间】:2012-08-31 15:19:13
【问题描述】:
在 asp.net 4.5 之前的过去,我们可以轻松地将日期绑定到 Gridview、Formview 或其他数据绑定控件,并使用简单的格式字符串使其看起来像样。
<asp:TextBox
ID="DateFieldTextBox"
runat="server"
Text='<%# Bind("DateField","{0:d}") %>'/>
新的强类型模型绑定有点困难。
<asp:TextBox
ID="DateFieldTextBox"
runat="server"
Text='<%# BindItem.DateField %>'/>
会起作用,但会生成完整的日期/时间字符串,而不仅仅是日期。
<asp:TextBox
ID="DateFieldTextBox"
runat="server"
Text='<%# BindItem.DateField.ToShortDateString() %>'/>
.. 这应该可以,但它会产生编译时错误“BindItem 的代码语法无效”。 Item.DateField.ToShortDateString() 有效,但不绑定回发。
现在我们已经恢复到旧语法,但我们希望获得现代编译时间检查,但仍然能够很好地格式化日期。其他人之前遇到过这种情况吗?
【问题讨论】:
-
在尝试此操作时也不起作用:
'<%# string.Format(CultureInfo.CurrentCulture, "{0:d}", BindItem.InfoBirthday) %>',它说:编译器错误消息:CS0103:当前上下文中不存在名称“BindItem” -
@senthilkumar:你读过这个问题吗?我们需要新模型绑定的替代方案——不要使用旧的
Eval(后期绑定反射),而是使用Container.DataItem:string.Format("{0:d}", ((DataRowView)Container.DataItem)["DateField"])
标签: visual-studio-2012 asp.net-4.5