【问题标题】:Using extension methods within inline databinding context在内联数据绑定上下文中使用扩展方法
【发布时间】:2008-11-19 10:02:00
【问题描述】:

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

我明白了:

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

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

(在用户控件中包含的网格视图的模板字段内)

即使我在用户控件的顶部包含定义扩展方法的命名空间:

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

有没有其他人遇到过这个问题,有什么办法可以解决吗?

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    错误消息有时会误导人...

    【讨论】:

    • 我遇到了同样的问题。必须右键单击项目,转到“应用程序”选项卡,然后将运行时切换到 .NET 4.0。谢谢!
    【解决方案2】:

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

    namespace MyNamespace.Formatting
    

    【讨论】:

    • 是的,应该 - 他们匹配,只是似乎没有被捡起。
    【解决方案3】:

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

    我猜你的扩展方法位于一个名为 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" %>
    

    【讨论】:

      猜你喜欢
      • 2010-09-27
      • 2019-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-21
      • 2012-12-10
      相关资源
      最近更新 更多