【问题标题】:How to use today's date if DateTime is null?如果 DateTime 为空,如何使用今天的日期?
【发布时间】:2023-04-06 15:12:02
【问题描述】:

我对编程很陌生。我将 ASP.NET Core 3.0 与 MVC 一起使用。我想知道,如果用户没有输入日期,那么日期就设置为今天

我尝试在模型的构造函数中创建一个 if 语句并将今天的时间设置为默认值

public class Post
{
    [DataType(DataType.DateTime)]
    public DateTime? ReleaseDate { get; set; } = DateTime.Now;

    public Post()
    {
        if (ReleaseDate == null)
        {
            ReleaseDate = DateTime.Now;
        }
    }
}

这是控制器中的 Create 方法

public async Task<IActionResult> Create([Bind("Id,Title,Author,ReleaseDate,ExpirationDate,Content")] Post post)
        {
            if (ModelState.IsValid)
            {
                _context.Add(post);
                await _context.SaveChangesAsync();
                return RedirectToAction(nameof(Index));
            }
            return View(post);
        }

问题是它不起作用,反正日期为空

【问题讨论】:

  • 我尝试了代码并且它有效。有消息吗?
  • 您将 ReleaseDate 属性设置为等于用户输入的代码是什么?
  • 欢迎来到 StackOverflow。你的那部分代码看起来不错。通话是如何进行的?
  • 在决定“今天的时间”是什么意思时,是否需要考虑您所在的时区?

标签: c# .net datetime asp.net-core model-view-controller


【解决方案1】:

您是否使用Post 的实例作为HttpPost 操作方法中的参数?也许模型绑定器正在使用您指定的默认值创建对象的实例,然后分配null。考虑在 action 方法中测试 null。

[HttpPost]
public ActionResult MyMethod(Post post)
{
    if (post.ReleaseDate == null)
    {
        post.ReleaseDate = DateTime.Now;
    }

    // other stuff
}

【讨论】:

  • 是的,行得通,我没想到,非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多