我有一个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
为null并且失败。如您所见,MyUser.Details
设置在上方(应该为字符串)。这样设置Date
或Name
没问题。
答案 0 :(得分:0)
已通过评论回答:
绑定MyModel作为绑定属性,而不是将它绑定到一个ViewModel(这实际上只是一个不同的类型,仅带有表单提供的字段),然后将其映射到任何MyUser。您可以检查ModelState的用户输入以确保其有效。