检查 Eval(“VALUE”) 是否为 null
题
相当新 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
{
" - "
}
这是我得到的错误:
数据绑定:“System.Data.DataRowView”不支持名为:“2014 年 4 月 17 日 13:30:00”。
那么,支票是假的吗?或者错误在其他地方?
解决方案
尝试在需要带有日期或“ - ”的字符串的地方使用 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
传递带有日期但不带有属性名称的第二个参数字符串。
其他提示
假设“Eval”方法以字符串形式返回您的日期值,这是您想要做的吗?:Convert.ToDateTime(Eval("DATE")).AddMinutes(Convert.ToDateTime(Eval("DUREE")).Minute)
这可能是您增加分钟数问题的答案。
但是,您收到的错误似乎表明存在不同的问题。您发布的代码似乎位于代码后面(?)。 DataBinder.Eval
方法通常在 aspx 中用于 Web 控件,例如 Repeater 控件。在这种情况下,您必须将第二个参数传递给 DataBinder.Eval
作为公共财产的名称。
为了清楚起见,您可以点击查看 这里
您可以在返回财产价值的同时添加分钟数
不隶属于 StackOverflow