添加 Post 时模型无效

Model invalid when adding in Post

我有一个 Razor 页面,它提交了 MyUser 的大部分必填字段,但是,我想在添加到数据库之前手动创建一些字段。

public async Task<IActionResult> OnPostAsync()
{
    //Other MyUser attributes set using form
    MyUser.Date = DateTime.Now;
    MyUser.Name = User.Identity.Name;
    MyUser.Details = "Sort This";

    if (!ModelState.IsValid)
    {
        return Page(); //Claims MyUser.Details is null
    }

    _context.User.Add(MyUser);
    await _context.SaveChangesAsync();

    return RedirectToPage("./Index");
}

我的问题是,当调用 !ModelState.IsValid 时,它表示 MyUser.Details 为空并且失败。可以看到上面设置了MyUser.Details(应该是string)。我用这种方式设置 DateName 没有问题。

评论回复:

不要将 MyUser 作为绑定 属性,而是绑定一个 ViewModel(这实际上只是一种不同的类型,只有表单提供的字段),然后从它映射到 MyUser 是什么。您可以检查用户输入的 ModelState 以确保其有效。