在内联数据绑定上下文中使用扩展方法

时间:2008-11-19 10:02:01

标签: c# asp.net data-binding gridview extension-methods

我正在尝试使用一些扩展方法来对DateTime和Int32应用一致的格式 - 这在后面的代码中运行得非常好,但我遇到了数据绑定问题。

我明白了:

'System.DateTime' does not contain a definition for 'ToCustomShortDate'

<%# ((ProductionDetails)Container.DataItem).StartDate.ToCustomShortDate() %>

(在用户控件中包含的gridview的模板字段内)

即使我在usercontrol的顶部包含扩展方法的命名空间:

<%@ import namespace="MyAssembly.Formatting" %>

有没有其他人遇到过这个并且有什么方法可以解决它吗?

编辑:我的错误,上面应该是:

<%@ import namespace="MyNamespace.Formatting" %>

即。我没有错误地引用命名空间(在后面的代码中使用vertabim)

3 个答案:

答案 0 :(得分:2)

发现问题!我按照我的想法正确地包含了命名空间 - 但真正的问题是应用程序只包含.NET 3.5程序集而不是使用3.5编译器编译,缺少web.config中的一些条目,我在创建时发现了空项目并在那里尝试(成功)!

错误消息有时会产生误导......

答案 1 :(得分:1)

关于上面实现的扩展方法,我的命名空间应该是这样吗?

namespace MyNamespace.Formatting

答案 2 :(得分:0)

您应该从导入命名空间中删除程序集名称...

我猜您的扩展方法位于名为Formatting的名称空间中。

namespace Formatting
{

    public static class DateTimeExtender
    {
        public static string ToCustomShortDate(this DateTime date)
        {
            return date.ToString("dd MMM yyyy");
        }
    }

    public class ProductionDetails
    {
        public DateTime StartDate { get; set; }    
    }
}

在ASPX页面中......

<%@ Import Namespace="Formatting" %>