查找对象id的值

时间:2014-03-18 14:55:11

标签: c# asp.net asp.net-mvc variables

我创建了一个动作结果,允许restuarant将其菜单保存到数据库中。我的问题是我需要将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();
}

1 个答案:

答案 0 :(得分:3)

很可能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});

旁注。确保最后一行中的参数拼写正确 - 不应该是MenuID而不是MenudID吗?