Использование методов расширения в контексте связывания данных - PullRequest
4 голосов
/ 19 ноября 2008

Я пытаюсь использовать некоторые методы расширения, которые я использую, чтобы применить согласованное форматирование к DateTime и Int32, - которое прекрасно работает в коде позади, но у меня есть проблемы с привязкой данных.

Я получаю:

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

для

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

(внутри поля шаблона вида сетки, содержащегося в пользовательском контроле)

Даже когда я включаю пространство имен, в котором определяется метод расширения в верхней части usercontrol:

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

Кто-нибудь еще сталкивался с этим и есть ли способ решить это?

РЕДАКТИРОВАТЬ: Моя ошибка, выше должно быть:

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

т. Я неправильно ссылаюсь на пространство имен (работает в коде vertabim)

Ответы [ 3 ]

2 голосов
/ 28 ноября 2008

Нашел проблему! Я правильно включил пространство имен, как я думал - но реальная проблема заключалась в том, что приложение включало только сборки .NET 3.5 и не компилировалось с использованием компилятора 3.5, пропускало некоторые записи из web.config, которые я понял, когда создал пустой проект и попробовал его (успешно) там!

Сообщения об ошибках иногда могут вводить в заблуждение ...

1 голос
/ 19 ноября 2008

Относительно метода расширения, который я реализовал выше, мое пространство имен должно выглядеть так?

namespace MyNamespace.Formatting
0 голосов
/ 19 ноября 2008

Вы должны удалить имя сборки из пространства имен импорта ...

Я полагаю, ваш метод расширения находится в пространстве имен, называемом Форматирование.

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" %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...