我在我的项目MVC剃须刀C#中有两个表单。
View1:那显示了所有的记录。点击特定的记录就可以编辑页面。 View2:它在表单中显示选定的记录,以便进行更新。
因此,当用户提交form...that时,Controller...Controller操作方法有一个View参数,该参数从视图中的隐藏字段填充ID属性。
有一种倾向,即有人通过浏览器的检查元素故意更改html中的ID,而数据可能会出现错误的记录.
解决此问题的一种方法是从视图模型传递加密的值。但是,用户仍然可以从另一条记录中交换加密的值,并可以在提交表单之前通过in元素将加密的ID值放入html中的另一条记录中。
我希望我能澄清这个问题。阅读时仍有任何问题,请让我再次澄清。
请提出解决办法。
发布于 2015-10-12 13:33:37
处理这个问题的最好方法是不要发布id。相反,使用URL的id部分,然后如果它被更改了,那么将使用一个完全不同的资源:
[HttpPost]
public ActionResult Edit(int id, Foo model)
{
var foo = db.Foos.Find(id);
if (foo == null)
{
return new HttpNotFoundResult();
}
if (ModelState.IsValid)
{
// map values from model (posted data) to instance from DB
db.Entry(foo).State = EntityState.Modified;
db.SaveChanges();
}
return View(model);
}https://stackoverflow.com/questions/33078835
复制相似问题