Visual Studio 从ASP.NET核心MVC中的新记录获取ID

67up9zun  于 2022-11-30  发布在  .NET
关注(0)|答案(1)|浏览(285)

我的控制器中有以下操作方法:

// GET: MenuOrders/Create
public IActionResult Create()
{
    ViewData["MasterMenuId"] = new SelectList(_context.MasterMenu, "MasterMenuId", "MasterMenuId");
    return View();
}

// POST: MenuOrders/Create
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create([Bind("MenuOrderId,CustomerName,MasterMenuId,OrderQty,IsPaid,IsCancel")] MenuOrder menuOrder)
{
        if (ModelState.IsValid)
        {
            _context.Add(menuOrder);
            await _context.SaveChangesAsync();
            return RedirectToAction(nameof(Index));
        }

        ViewData["MasterMenuId"] = new SelectList(_context.MasterMenu, "MasterMenuId", "MasterMenuId", menuOrder.MasterMenuId);

        return View(menuOrder);
}

在我执行它之后,它将重定向到Index页面。我想更改它,这样它将停留在具有相同数据的相同视图中,包括Id(已检索)。
我的问题是:我该怎么做?
谢谢你

e4yzc0pl

e4yzc0pl1#

我想更改它,这样它将保留在相同的视图中,具有相同的数据,包括Id(已检索)。
您可以通过以下方式实现:
控制器:
你必须返回到create view page,而menuOrder.MenuOrderId将返回我们最后插入的id。因此代码将为:

[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create([Bind("MenuOrderId,CustomerName,MasterMenuId,OrderQty,IsPaid,IsCancel")] MenuOrder menuOrder)
{
        if (ModelState.IsValid)
        {
            _context.Add(menuOrder);
            await _context.SaveChangesAsync();
            int lastInsertedId = menuOrder.MenuOrderId;
            ViewBag.lastensertedId = lastInsertedId ;
            return View("Create") ;
        }

        ViewData["MasterMenuId"] = new SelectList(_context.MasterMenu, "MasterMenuId", "MasterMenuId", menuOrder.MasterMenuId);

        return View(menuOrder);
}

**注意:**如果您想清除现有的表单,您可以在return View("Create")之前使用ModelState.Clear();。我刚刚通过绑定到viewbag中为您提供了最后一个Inserted Id演示,您甚至可以在模型中绑定它。

视图:在视图中,您可以设定:
输出量:

相关问题