绑定方法 - 将格式字符串提供为常量

时间:2012-06-27 07:09:57

标签: asp.net

将值绑定到控件时,我有很多这样的内容:

Text='<%# Bind("StartDate", "{0:dd.MM.yyyy}") %>'

但是我想将这种格式(以及其他一些)提取到帮助器。这就是我所做的:

public static class DateTimeExtension
{
    public const string CalendarDateFormat = "{0:dd.MM.yyyy}";
    public const string CalendarMonthFormat = "{0:MM.yyyy}";

    public static string ToCalendarDate(this DateTime dateToFormat)
    {
        return string.Format(CalendarDateFormat, dateToFormat);
    }

    public static string ToCalendarMonthDate(this DateTime dateToFormat)
    {
        return string.Format(CalendarMonthFormat, dateToFormat);
    }
}

但是现在,当我将我的Bind电话改为这样的话:

Text='<%# Bind("StartDate", DateTimeExtension.CalendarDateFormat) %>'

我得到一个例外:

System.Web.HttpException: A call to Bind was not well formatted.  Please refer to documentation for the correct parameters to Bind.

我在web.config中配置了名称空间,因此不应该成为问题。有没有办法实现我喜欢的目标?

1 个答案:

答案 0 :(得分:4)

尝试使用Eval作为Bind表达式是ASP.NET代码生成的一个非常特殊的部分,它有一个限制,即format参数必须是文字。

Text='<%# Eval("StartDate", DateTimeExtension.CalendarDateFormat) %>' 

详细了解Bind和Eval here