ASPNETMVC无法接受空的日期时间(NullDatetime)
创始人
2024-09-20 09:31:32
0

在 ASP NET MVC 中,当从视图中传递 DateTime 属性时,如果该属性为 null,就会抛出异常。可以通过以下两种方式解决:

  1. 将 DateTime 属性声明为可空类型,如下所示:

public class MyClass { public DateTime? MyDateTime { get; set; } }

在视图中,如果该属性为空,则可以这样进行检查:

@if (Model.MyDateTime.HasValue) { // DateTime 不为 null 的操作 } else { // DateTime 为 null 的操作 }

  1. 使用自定义模型绑定器

在自定义模型绑定器中,我们可以重写默认的行为,使其能够接受空值。以下是示例代码:

public class NullableDateTimeModelBinder : IModelBinder { public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) { var valueProviderResult = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);

    if (valueProviderResult == null || string.IsNullOrEmpty(valueProviderResult.AttemptedValue))
    {
        return null;
    }

    DateTime.TryParse(valueProviderResult.AttemptedValue, CultureInfo.CurrentCulture, DateTimeStyles.None, out DateTime dateValue);

    return dateValue;
}

}

然后,在全局.asax.cs 中注册模型绑定器:

protected void Application_Start() { // ... ModelBinders.Binders.Add(typeof(DateTime?), new NullableDateTimeModelBinder()); }

在视图中,将 DateTime 属性声明为可空类型即可:

public class MyClass { public DateTime? MyDateTime { get; set; } }

相关内容

热门资讯

今年以来!epoker免费透视... 今年以来!epoker免费透视脚本,微乐小程序脚本入口,开挂脚本(揭秘有挂)-哔哩哔哩1、epoke...
透视解迷!hhpoker辅助器... 透视解迷!hhpoker辅助器,hhpoker透视脚本(透视)确实存在有神器(哔哩哔哩)1、让任何用...
为了进一步!pokerrrr2... 您好,pokerrrr2辅助这款游戏可以开挂的,确实是有挂的,需要了解加去威信【485275054】...
脚本辅助!aapoker免费透... 脚本辅助!aapoker免费透视脚本,aapoker怎么设置抽水(透视)都是真的是有方法(哔哩哔哩)...
此事迅速冲上热搜!hh pok... 此事迅速冲上热搜!hh poker软件,微信微乐辅助器免费安装,解谜透视(新版有挂)-哔哩哔哩1、h...
脚本专业!德普之星透视辅助软件... 脚本专业!德普之星透视辅助软件,德普之星的辅助工具介绍(透视)总是有方法(哔哩哔哩)1、实时透视辅助...
透视私人局!菠萝辅助器免费版的... 透视私人局!菠萝辅助器免费版的特点,微乐小程序辅助开挂,总结脚本(有挂规律)-哔哩哔哩1、下载好菠萝...
透视有挂!pokermaste... 透视有挂!pokermaster脚本,贵州微乐自建房辅助软件下载,推荐透视(竟然有挂)-哔哩哔哩1、...
透视揭露!wpk透视辅助下载,... 透视揭露!wpk透视辅助下载,wpk俱乐部辅助器(透视)总是真的有攻略(哔哩哔哩)1、游戏颠覆性的策...
透视有挂!wepoker辅助透... 透视有挂!wepoker辅助透视软件,微乐小程序黑科技下载,透视脚本(有挂规律)-哔哩哔哩1、让任何...