如果DateTime为null,如何使用今天的日期?

时间:2019-05-21 20:41:26

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

我对编程很陌生。我将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);
        }

问题是它不起作用,日期仍然为空

1 个答案:

答案 0 :(得分:0)

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

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

    // other stuff
}