查找对象id的值

本文关键字:的值 id 对象 查找 | 更新日期: 2023-09-27 17:50:57

我创建了一个操作结果,允许餐厅将菜单保存到数据库中。我的问题是,我需要使用menuID为另一个控制器,但当我运行代码的变量menuID总是0,而不是刚刚添加到数据库的值。

任何帮助都是感激不尽的。

创建菜单操作结果

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(MenuViewModel model)
{
     if (ModelState.IsValid)
     {
          var manager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext()));
          var currentUser = manager.FindById(User.Identity.GetUserId());
          using (var objCtx = new ApplicationDbContext())
          {
               var currentrestaurant = (from r in objCtx.Restaurants
                                        where r.UserID == currentUser.Id
                                        select r).First<Restaurant>().id;
               var menu = new Menu() { Name = model.Name, Restaurantid = currentrestaurant };
               var menuID = menu.Id;
               db.Menus.Add(menu);
               db.SaveChanges();
               return RedirectToAction("Create", "Meal", new { MenudID = menuID});
          }
      }
      return View();
}

查找对象id的值

这个ID很可能是在数据库中生成的。如果是这种情况,menu.Id将具有实际值您将对象保存到DB,而不是之前。所以你需要重新排序你的代码:

var menu = new Menu() { Name = model.Name, Restaurantid = currentrestaurant };
db.Menus.Add(menu);
db.SaveChanges();
return RedirectToAction("Create", "Meal", new { MenudID = menu.Id});

边注。确保最后一行的parameter拼写正确——不应该是MenuID而不是MenudID吗?