添加 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)。我用这种方式设置 Date
或 Name
没有问题。
评论回复:
不要将 MyUser 作为绑定 属性,而是绑定一个 ViewModel(这实际上只是一种不同的类型,只有表单提供的字段),然后从它映射到 MyUser 是什么。您可以检查用户输入的 ModelState 以确保其有效。
我有一个 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)。我用这种方式设置 Date
或 Name
没有问题。
评论回复:
不要将 MyUser 作为绑定 属性,而是绑定一个 ViewModel(这实际上只是一种不同的类型,只有表单提供的字段),然后从它映射到 MyUser 是什么。您可以检查用户输入的 ModelState 以确保其有效。