微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ASP.NET Core MVC POST方法具有外键ID的模型

如何解决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将与从客户端发布的相同。有两种解决方法:

  1. 在使用模型返回View并将其作为隐藏字段保留在视图中之前,请先在控件的get操作中为模型分配UserId。
  2. 检查ModelState的哪些属性无效,如果只有UserId,则对其进行分配并保存。我可以向您展示可以定义Modeld中无效内容的代码

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。