我正在尝试使用一些扩展方法来对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)
答案 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" %>