如何解决ASP.NET Core MVC POST方法具有外键ID的模型
我正在尝试在模型具有外键字段的地方进行POST
,但是我想将此值设置为创建者的ID。我有一个名为{Store}并带有ApplicationUserId
FK的模型。我试图将包含ApplicationUserId
的新对象“ Store”传递给GET上的视图,但是当我提交时,ApplicationUserId
字段为空。我还尝试在控制器上手动设置字段,但是此时模型状态已经无效
我的动作:
public async Task<IActionResult> Create(Store store)
{
store.ApplicationUser = currentUser
if (ModelState.IsValid)
{
_context.Add(store);
await _context.SaveChangesAsync();
return RedirectToAction(nameof(Index));
}
return View(store);
}
我的模特:
public class Store
{
public int Id { get; set; }
public string Name { get; set; }
[required]
[ForeignKey("ApplicationUserId")]
public virtual ApplicationUser ApplicationUser { get; set; }
}
解决方法
您可以分配UserId(或任何其他属性),它将有效并保存到DB,但不会影响您的ModelState。 ModelState将与从客户端发布的相同。有两种解决方法:
- 在使用模型返回View并将其作为隐藏字段保留在视图中之前,请先在控件的get操作中为模型分配UserId。
- 检查ModelState的哪些属性无效,如果只有UserId,则对其进行分配并保存。我可以向您展示可以定义Modeld中无效内容的代码
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。