C# 理解NerdDinner MVC返回错误的原因有问题
因此,我正在学习ScottGu的NerdDinner教程,我很难理解这个错误。我正在尝试实现CRUD,因此首先,在编辑数据时,我从以下代码开始:C# 理解NerdDinner MVC返回错误的原因有问题,c#,asp.net-mvc,model-view-controller,C#,Asp.net Mvc,Model View Controller,因此,我正在学习ScottGu的NerdDinner教程,我很难理解这个错误。我正在尝试实现CRUD,因此首先,在编辑数据时,我从以下代码开始: public ActionResult Edit(int id) { Dinner dinner = dinnerRepository.GetDinner(id); return View(dinner); } 这将正确显示“编辑”视图,并提供用于编辑数据的字段。现在,当我继续时,我的编
public ActionResult Edit(int id)
{
Dinner dinner = dinnerRepository.GetDinner(id);
return View(dinner);
}
这将正确显示“编辑”视图,并提供用于编辑数据的字段。现在,当我继续时,我的编辑操作变成:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(int id, FormCollection formValues)
{
Dinner dinner = dinnerRepository.GetDinner(id);
UpdateModel(dinner);
dinnerRepository.Save();
return RedirectToAction("Details", new { id = dinner.DinnerID });
}
我返回一个404错误。显然找不到编辑视图。我很难理解为什么会发生这种情况。我甚至试着复制确切的语法(我不喜欢这样做),但运气不好。我错过了那么明显的东西吗
编辑:添加此行后立即执行:
[接受动词(HttpVerbs.Post)]
也许这会有所帮助?您需要在控制器中同时使用这两种方法 第一种方法用于GET请求,这些请求不是表单提交的结果。如果你去/Edit/1/Edit/2等,这些就是你看到的
ActionResult Edit()方法不会取代您的第一个Edit()方法,而是一个附加方法,用于响应发送表单后的POST请求您实际上有两个编辑操作,是吗?一个操作不带[AcceptVerbs]属性,用于显示初始编辑视图,另一个操作仅接受POST调用,用于将表单中发布的任何值转换为模型,并将其保存在数据存储中
从您的措辞来看,似乎您没有添加第二个编辑操作(方法),而是编辑了旧的操作。404是发生在GET还是POST上?第一种方法用于GET,第二种方法用于POST。正如blowdart所说,我们没有更改编辑方法,而是添加了第二个方法。非常感谢。真不敢相信我没有在文档中看到。这正是我所做的。当他说让动作超负荷时,我应该仔细阅读一下教程。谢谢大家的帮助。