- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我创建了一个简单的 CompositeControl 并公开了 Nullable DateTimeOffset 属性。我使用
将控件绑定(bind)到 SQL Server DateTimeOffset 字段DateTimeOffset='<%# Bind("myDateTimeOffsetField") %>'
当 DateTimeOffset 字段具有值时,这非常有效。但是当该字段为 NULL 时,我收到“指定的 Actor 无效”错误。
当字段为 NULL 时,如何停止此错误并将我的属性设置为 Nothing?
我认为这将是默认行为!
属性定义是:
Public Property DateTimeOffset As DateTimeOffset?
稍后评论:
我发现如果我从使用 Bind 更改为:
DateTimeOffset='<%# iif(IsDbNull(Eval("myDateTimeOffsetField")), Nothing, Eval("myDateTimeOffsetField")) %>'
但是我没有在 FormView.ItemUpdating 事件中将“myDateTimeOffsetField”作为参数传递(是的,这是在 FormView 控件中),因为 ASP.NET 假定我没有绑定(bind)回数据库。
实际代码(按请求添加)
这是我尝试绑定(bind)到的复合控件中的属性:
Public Property DateTimeOffset As DateTimeOffset?
Get
Return CType(ViewState("DTO"), DateTimeOffset?)
End Get
Set(value As DateTimeOffset?)
ViewState("DTO") = value
End Set
End Property
这是绑定(bind)的标记。该控件位于 FormView 的 EditItemTemplate 中,该 FormView 绑定(bind)到 SQL 数据源,返回一个名为 [dtoMldRejOn] 的字段,并带有可选的 DateTimeOffset 值。
<APS:DateTimeOffsetControl runat="server" id="dtocMldRejOn" TextBoxCssClass="inputdatetime" ValidationGroup="vw1" FieldName="<%$ Resources: Resource, rxgFrom %>" DateTimeOffset='<%# Bind("dtoMldRejOn") %>' WindowsTimeZoneID="<%# me.WindowsTimeZoneID %>" IsRequired="false" />
如您所见,我的 Composite 控件用于处理 DateTimeOffset 值。除非数据库中的 DateTimeOffset 字段 [dtoMldRejOn] 为 NULL,否则一切都很好,然后我会得到异常。
最佳答案
我以前从未创建过可绑定(bind)控件,但我想提出建议。如何将 DateTimeOffset
属性设置为 Object
类型。这样,该属性将接受任何数据类型,包括 DBNull。
进入Set
代码后,检查传递的值是否为DBNull.Value。如果是,创建一个新的空 DataTimeOffset?对象并将其保存在 ViewState 中。
如果非 DBNull 值,则无法转换为日期时间,则抛出错误。
我没有尝试过,所以我不知道这是否有效。
################更新的答案################
我的建议是,您创建 2 个属性,如下所示:
Public Property DateTimeOffset() As DateTimeOffset?
Get
Return DirectCast(ViewState("DTO"), DateTimeOffset?)
End Get
Set(ByVal Value As DateTimeOffset?)
ViewState("DTO") = Value
End Set
End Property
<Bindable(True, BindingDirection.TwoWay)>
Public Property DbDateTimeOffset As Object
Get
Return Me.DateTimeOffset
End Get
Set(value As Object)
If IsDBNull(value) OrElse value Is Nothing Then
Me.DateTimeOffset = New DateTimeOffset?
Else
Me.DateTimeOffset = DirectCast(value, DateTimeOffset?)
End If
End Set
End Property
因此,在您的标记中,绑定(bind)将是到 DbDateTimeOffset
属性:
DbDateTimeOffset='<%# Bind("myDateTimeOffsetField") %>'
在代码隐藏时,您可以使用其他属性来读取该属性,而无需进行强制转换。
关于asp.net - 当 DataBind 到 Nullable DateTimeOffset 并且字段为 NULL 时,指定的强制转换无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16307520/
如何从 DateTimeOffsetDateTimeOffset 对象中提取日期?我认为 Date 属性只会返回日期部分。但是,我一直在获取整个日期,即 7/17/2014 12:00:00 AM -
如何计算可为空的 DateTimeOffset 之间的时间?到 DateTimeOffset.Now ? 我需要像“x 天 y 小时前”这样的结果 我是从做这样的事情开始的。 var creati
在我的 ASP.NET Core Web-API 项目中,我收到了对我的一个 API Controller 的 HTTP POST 调用。 在评估 JSON 负载并反序列化其内容时,Json.NET
我从具有多个 datetimeoffet 列的表中选择一条记录,当我添加 for json auto 时,它将它从 2017-06-21 08:12:16.1430000 +00:00 到 2017-
我仍在学习 C# .NET 库,我该如何处理以下情况。如果有人能指导我正确的方向,将不胜感激。 最佳答案 您不能将空值分配给不可为空的值。解决此问题的一种方法是使用 ?? 添加默认(非空)值。 例如
我目前在 UTC+1 时区。 TimeZoneInfo.Local.BaseUtcOffset 返回 +1。 new DateTimeOffset(DateTime.Today).AddDays(4)
我想将默认值设置为 DateTimeOffset - 它不应该是 DateTime.Now 而是 DateTime.MinValue 或 default(DateTime) 任何想法我该怎么做?这段代
我有这些输入字符串: var timeStr = "03:22"; var dateStr = "2018/01/12"; var format = "yyyy/MM/dd"; var timeZon
如果我有一个表示有效 UTC 时间的 DateTime 实例,以及一个将 DateTime 转换为它适用的时区的偏移量,我该如何构造一个 DateTimeOffset 实例来表示它? var utcD
我正在使用 Quartz.NET( http://quartznet.sourceforge.net/ ) 并且我试图将开始日期设置为午夜。但是我在创建这个日期时遇到了问题。该应用程序将位于不同时区的
我遇到了以下要求的有趣问题:测试进程是否在同一天运行,如果没有运行进程。日期存储为 DataTimeOffset。 我最初的做法是: 将这两个值都转换为 UTC,因为这些日期可能是在不同的时区创建的并
我想从一个字符串中创建一个新的DateTimeOffset offset = -5 我愿意: string dt = "11082016"; DateTime date = DateTime.P
我在理解 DateTimeOffset 时遇到一些问题... 我正在尝试为 Quartz-Job 创建一个简单的触发器。存在一个 triggerbuilder,可以使用它创建这样的触发器: var t
我想从 DateTimeOffset 类型中获取格式化字符串,它应该如下所示:20. July 2009。(带点),我尝试使用以下代码: Birthday.ToString("dd. MMMM yyy
我阅读了有关 DateTimeOffset、属性 DateTime 的文档。 https://msdn.microsoft.com/en-us/library/system.datetimeoffse
我正在使用 C# 驱动程序在我的集合中存储 DateTimeOffset 字段。我想按一段时间对值进行分组,即。按天。 为此,我正在做类似的事情: db.getCollection('Collecti
我们正在将 XML DateTime 值解析为 DateTimeOffset 值。根据W3C XSD documentation for DateTime ,该类型可能有或没有时区信息。 我们的要求是
我有一个 DateTimeOffSet 类型的变量。我想过滤所有在 2010 年 1 月 1 日之后创建的项目。 所以我写了下面的查询: var _date = new DateTimeOffs
我将时间表作为一周中的一天、小时和分钟存储在数据库中。读取数据后,我们为下一次出现的那一天、小时和分钟创建一个 DateTime 对象,但我需要修改它以支持 DST。如有必要,我可以修改数据库。 我知
有没有办法将 DateTimeOffset 转换为午夜后的分钟数? 我希望偏移部分反射(reflect)在它给出的答案中。 最佳答案 dateTimeOffset.UtcDateTime.TimeOf
我是一名优秀的程序员,十分优秀!