gpt4 book ai didi

asp.net-mvc - deleteconfirmed 操作从哪里获取 asp.net mvc 中的 Id

转载 作者:行者123 更新时间:2023-12-04 02:21:15 25 4
gpt4 key购买 nike

也许这个问题已经被问过但从未回答过!!

deleteconfirmed方法如何通过post方法获取id?

  • 没有包含 Id 的隐藏字段。

  • 我篡改了数据以更改 referer Url,使其不再包含 id,但 deleteconfirmed 操作仍然获得在 get 期间传递的正确 id。

那么它是从哪里来的呢?

这是代码,获取方法:

[HttpGet]

public ActionResult Delete(int? id)
{
if (id == null)
{
return RedirectToAction("Index");
}
Driver driver= db.Drivers.Find(id);
if (driver== null)
{
return RedirectToAction("Index");
}
return View(driver);
}


// POST: /Driver/Delete/5
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public ActionResult DeleteConfirmed(int id)
{

Driver driver= db.drivers.Find(id);
db.drivers.Remove(driver);
db.SaveChanges();
return RedirectToAction("Index");
}

最佳答案

Html.BeginForm()助手会将路由参数添加到表单 action action 属性基于您在 RouteConfig.cs 中的路由定义

假设您有默认路由 url: "{controller}/{action}/{id}",那么如果你将一个值传递给(比如)5 到 Delete(int? id) get 方法,然后如果您检查表单标签,您将看到 <form action="/YourController/Delete/5" ...> .请注意,如果您传递给 View 的模型具有名为 id 的属性,这也会被添加.

当您发布表单时,DefaultModelBinder读取表单字段 ( Request.Form ) 的值,以及路由数据和查询字符串参数的值,因此即使您没有 id 的隐藏输入,它是从路由参数中设置的。

关于asp.net-mvc - deleteconfirmed 操作从哪里获取 asp.net mvc 中的 Id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29187152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com