从 API 的日期时间、创建/发布到 API

Datetime from API , Create/post to API

提问人:Mnda90 提问时间:12/16/2022 更新时间:12/16/2022 访问量:194

问:

我有两个不同的项目,一个是 API,一个是 web(front)。 我可以通过我的 API 创建课程,但是当我尝试从前端发布时,我收到了此错误,

FormatException:输入字符串的格式不正确。

它抱怨这个,

<span asp-validation-for="CourseTitle" class="text-danger"></span>
        </div>
          <div class="col-2">
            <label asp-for="CourseStart" class="control-label pt-2" style="font-size:20px;"></label>
        </div>
        <div class="col-10 pb-3">
            <input asp-for="CourseStart" class="form-control" />
            <span asp-validation-for="CourseStart" class="text-danger"></span>
        </div>
            <div class="col-2">
            <label asp-for="CourseEnd" class="control-label pt-2" style="font-size:20px;"></label>
        </div>
        <div class="col-10 pb-3">

不知何故,我的 CourseStart 不起作用,我的班级看起来像这样,

 [Key]
        public int CourseId { get; set; }
        [Required]
        public string CourseTitle { get; set; }

        [DataType(DataType.Date)]
        [DisplayFormat(DataFormatString = "{dd/MM/yyyy}", ApplyFormatInEditMode = true)]
        public DateTime CourseStart { get; set; }

        [DataType(DataType.Date)]
        [DisplayFormat(DataFormatString = "{dd/MM/yyyy}", ApplyFormatInEditMode = true)]
        public DateTime CourseEnd { get; set; }

我想我遇到的问题是,当我通过 API 保存课程时,我得到了这样的日期,

 "courseStart": "2022-12-15T00:00:00"

所以我认为它以某种方式期待 T00:00:00?你觉得怎么样?我在谷歌上找不到任何东西......

C# asp.net ASP.NET-MVC 日期时间

评论

0赞 Gabriel Stancu 12/16/2022
您是否检查过通过对 API 的调用发送的对象是否确实包含日期?
0赞 Mnda90 12/16/2022
嗯。。奇怪,因为我使用与我的 API 相同的模型。你认为我必须以某种方式更改显示格式?我在网上找不到任何东西。也没有教程或其他东西......
0赞 Bagus Tesa 12/16/2022
您是否尝试过发送遵守的日期?鉴于你有.dd/MM/yyyyApplyFormatInEditMode = true
0赞 Mnda90 12/16/2022
在我的前端,我在那里得到一个图标,我可以选择日期。而且这种格式是 yyyy-mm-dd,所以它必须以某种方式成为格式。我会尝试手动制作
0赞 Matt Johnson-Pint 12/17/2022
不确定您使用的是哪个版本的 .NET,但如果它有效,您可能希望用于此目的。它将从您的数据中消除。它是在 .NET 6 中添加的,我相信它现在应该可以在 ASP.NET 的大部分地方使用。DateOnlyT00:00:00

答:

0赞 Mnda90 12/16/2022 #1

我让它起作用了,我所做的是, 把我的班级改成这个,

[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
public DateTime CourseStart { get; set; }

之后,在我的 HTML 文件中,我输入了这个,

<div class="col-2">
     <label asp-for="CourseStart" class="control-label pt-2" style="font-size:20px;"></label>
            </div>
            <div class="col-10 pb-3">
                <input asp-for="CourseStart" type="date"  class="form-control" />
                <span asp-validation-for="CourseStart" class="text-danger"></span>
</div>

问题是,通过 HTML 助手,它以这种格式保存它,YYYY-MM-DD,所以我不得不更改它。你可能会自定义它,但对我来说很复杂:)