【问题标题】:ConvertEmptyStringToNull=”false” and yet the conversion still happensConvertEmptyStringToNull=”false” 但转换仍然发生
【发布时间】:2010-01-31 00:06:57
【问题描述】:

DetailsView 绑定到 ObjectDataSource。在 Detailsview 的 EditItemTemplate 中有两个 TextBox(T1 和 T2)。 T1 映射到 String 类型的更新参数,而 T2 映射到 DateTime 类型的更新参数。

假设两个 TextBox 都包含一个空字符串,那么当我尝试通过单击 DetailsView 的更新按钮来更新数据源时,ODS(或者可能是 DetailsView )会自动将 T1 的空字符串转换为 null,而 T2 的空字符串不会转换为null。我试图通过将 T1 的更新参数的 ConvertEmptyStringToNull 属性设置为 false 来防止 ODS 将 T1 的空字符串转换为 null(我还设置了 <asp:TemplateField ConvertEmptyStringToNull=”false” …>,但没有效果。

a)知道为什么 T1 的空字符串会被转换,而 T2 的不会?

b) 另外,我怎样才能防止转换(顺便说一句 - 我意识到我可以在更新方法中将 null 转换回空字符串)?

感谢

【问题讨论】:

  • @carewithl 我以为我在重现您的问题,但我没有同时在两个地方定义它。请参阅下面的我的编辑。您正在做什么可能会有所帮助,例如在 UpdatePanel 中吗?

标签: asp.net data-binding objectdatasource


【解决方案1】:

a)知道为什么 T1 的空字符串会得到 转换了,而 T2 没有?

T2 是一个 DateTime,它是一个值类型。值类型不能为空。好吧,除非你使用Nullable type

b) 另外,我该如何防止 转换(顺便说一句 - 我意识到我可以 将 null 转换回空字符串 内部更新方法)?

编辑:我试图复制上面的问题,但是当我没有在绑定控件的<asp:TemplateField> 中指定ConvertEmptyStringToNull="false" 时,我只能复制问题<asp:Parameter><asp:ObjectDataSource>。如果您忽略其中任何一个,那么您将在空字段上获得空值。在两个地方都定义了ConvertEmptyStringToNull="false",它不会将空字符串转换为空值。空字符串正确传递。您说您确实在两个地方都尝试过,所以我不确定为什么它不适合您。也许您可以向我们展示您的数据源和详细信息视图标记。

话虽如此,我认为在您的商务舱中进行下述检查仍然是一个好主意。就像您说的那样,您可以将 null 转换回空字符串。我就是这样做的:

我有一个帮助类,我们称之为 BizObject,它包含这个方法:

protected static string ConvertNullToEmptyString(string input)
{
  return (input == null ? "" : input);
}

然后在我的业务类的插入/更新方法中,我在每个字符串参数上调用 ConvertNullToEmptyString:

public static bool UpdateSource(string sourceName, DateTime sourceDate)
{
    sourceName = BizObject.ConvertNullToEmptyString(sourceName);
    ...
    bool ret = UpdateSource(record);
    return ret;
}

【讨论】:

  • A) “好问题,我也不知道为什么,...”您是否暗示您有同样的问题,您将 ConvertEmptyStringToNull 设置为 false,但 ODS 仍会转换该值? B)所以本质上ODS设法将空字符串转换为DateTime.MinValue(假设参数是DateTime类型),但是当将此值传递给方法时它无法将null转换为空字符串?!这有点奇怪
  • @carewithl A) 我确实按照您所说的进行了尝试,但它仍然将空字符串转换为 null,但我通常会按照上面的描述进行操作。 B)不,ODS 不会将空字符串转换为 DateTime.MinValue,MinValue 是 DateTime 的默认值。
猜你喜欢
  • 2017-04-14
  • 1970-01-01
  • 2015-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-05
相关资源
最近更新 更多