Проверить, является ли значение Eval(VALUE) нулевым

Совершенно новый для C# Мне нужно указать значение, чтобы добавить минуты к дате, но оно может быть нулевым. Вот как я делаю:

if(Eval("DUREE") != DBNull.Value)
{
    var duration = Convert.ToInt32(Eval("DUREE"));
    var date = Convert.ToDateTime(Eval("DATE"));
    var dateAsString = Convert.ToString(date.AddMinutes(duration));
    DataBinder.Eval(Container.DataItem, dateAsString, "{0:HH:mm}") 
}
else
{
    " - "
}

Вот ошибка, которую я получаю:

DataBinding: «System.Data.DataRowView» не поддерживает свойства, называемые: «17/04/2014 13:30:00».

Значит, чек фальшивый? Или ошибка в другом?


person Thomas Ayoub    schedule 11.01.2014    source источник
comment
Боже мой... Разбейте выражение на несколько операторов и начните отладку. Это поможет вам легче найти проблему, и вам не придется спрашивать;)   -  person walther    schedule 11.01.2014


Ответы (2)


Попробуйте использовать код в aspx вместо того места, где вам нужна строка с датой или "-"

<%# Eval("DUREE") == DBNull.Value || Eval("DATE") == DBNull.Value
    ? " - "
    : Convert.ToString(Convert.ToDateTime(Eval("DATE")).AddMinutes(Convert.ToInt32(Eval("DUREE")))), "{0:HH:mm}") %>

Проблема в вашем коде, что вы в DataBinder.Eval передаете вторую строку параметра с датой, но не с именем свойства.

person Daniil Grankin    schedule 11.01.2014
comment
Вы заслужили свой день и спасли мой. - person Thomas Ayoub; 11.01.2014
comment
2 1/2 года спустя, это прибило это для меня. - person nycdan; 26.12.2016

Предполагая, что метод «Eval» возвращает вам значение даты в виде строки, это то, что вы пытаетесь сделать? : Convert.ToDateTime(Eval("DATE")).AddMinutes(Convert.ToDateTime(Eval("DUREE")).Minute) Это может быть ответом на вашу проблему с добавлением минут.

Однако ошибка, которую вы получаете, похоже, указывает на другую проблему. Код, который вы опубликовали, кажется, находится в коде позади (?). Метод DataBinder.Eval обычно используется в aspx для веб-элемента управления, такого как элемент управления Repeater. В этом случае вам нужно будет передать второй параметр DataBinder.Eval в качестве имени общедоступного свойства.

Вы можете проверить это для ясности, нажав здесь

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

person ronilk    schedule 11.01.2014
comment
Добавьте сюда проверку if(Eval(DUREE) != DBNull.Value && Eval(DATE) != DBNull.Value). Но я не уверен, что проблема с вылетом в кастинге. - person Daniil Grankin; 11.01.2014