【问题标题】:How to convert DateTime to Date in ASP.NET Core (working with database)如何在 ASP.NET Core 中将 DateTime 转换为 Date(使用数据库)
【发布时间】:2021-03-15 14:05:29
【问题描述】:

我正在 Visual Studio 2017 中使用 asp.net core

我需要使用 C#、MVC 或 SQL 来解决这个问题

我正在创建一个带有 foreach 语句的表(如下)

        <table>
           <tbody>
                @foreach (var item in Model)
                {
                <tr>

                    <td>
                        @Html.DisplayFor(modelItem => item.Month)
                    </td>

                    <td>
                        @Html.DisplayFor(modelItem => item.Temperature)
                    </td>

                    <td>
                        @Html.DisplayFor(modelItem => item.StartDate)
                    </td>

                    <td>
                        @Html.DisplayFor(modelItem => item.EndDate)
                    </td>

                </tr>
                }
            </tbody>
        </table>

我正在尝试修改此模型数据以仅显示日期。

        public DateTime StartDate { get; set; }
        public DateTime EndDate { get; set; }

我将如何做到这一点,以便我的所有模型项目都受到影响?

这是我的控制器操作

 public IActionResult Create()
        {
            return View();
        }

        [HttpPost]
        public async Task<IActionResult> Create(Data data)
        {
            if (ModelState.IsValid)
            {
                _context.Add(data);
                await _context.SaveChangesAsync();
                return RedirectToAction(nameof(Index));
            }
            return View(data);
        }

【问题讨论】:

标签: c# html asp.net-core


【解决方案1】:

您可以使用DisplayFormat 属性注释您的模型:

using System.ComponentModel.DataAnnotations;

public class DateModel
{
    [DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}")]
    public DateTime StartDate { get; set; }

    [DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}")]
    public DateTime EndDate { get; set; }
}

或者如果你想避免重复这些,你也可以使用一个常量:

using System.ComponentModel.DataAnnotations;

public class DateModel
{
    [DisplayFormat(DataFormatString = Constants.DateOnlyFormat)]
    public DateTime StartDate { get; set; }

    [DisplayFormat(DataFormatString = Constants.DateOnlyFormat)]
    public DateTime EndDate { get; set; }
}

public static class Constants
{
    public const string DateOnlyFormat = "{0:MM/dd/yyyy}";
}

【讨论】:

  • 如何在表单中只显示日期?
  • 哪种形式?您的问题中没有这样的事情,您只是在显示值。但如果您还想将它应用于 input 字段,可以这样做:[DisplayFormat(DataFormatString = DateConstants.DateOnlyFormat, ApplyFormatInEditMode = true)].
【解决方案2】:

使用 DateTime 结构的 Date 属性。

<td>
      @Html.DisplayFor(modelItem => item.StartDate.Date.ToString("d"))
</td>

更多详情请参考:

【讨论】:

  • 这将产生该值不再是 DateTime 的副作用,因此可以在浏览器中以不同方式呈现。这在这里无关紧要,但可能在形式上很重要(使用 @Html.EditFor()
  • 如何在表单中只显示日期?
  • 我会尝试上面建议的 DisplayFormat 属性
猜你喜欢
  • 2019-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多