ASP.NET中的MVC操作引发404错误
本文关键字:错误 操作 NET 中的 MVC ASP | 更新日期: 2023-09-27 18:19:31
我必须向使用ASP.NET设计的现有应用程序添加一个delete方法,问题是我没有使用该方法的经验。以下是我所做的:
控制器
[HttpPost, Authorize(Roles = "Admin")]
public ActionResult TypeLotRemove(Guid id)
{
TypeLot typeLot = _repository.GetTypeLot(id);
//On supprime le type de lot à la base.
_repository.RemoveTypeLot(typeLot);
return RedirectToAction("TypeLot");
}
库存
public TypeLot RemoveTypeLot(TypeLot typeLot)
{
_entities.RemoveToTypeLot(typeLot);
_entities.SaveChanges();
return typeLot;
}
Designer.cs
[global::System.CodeDom.Compiler.GeneratedCode("System.Data.Entity.Design.EntityClassGenerator", "4.0.0.0")]
public void RemoveToTypeLot(TypeLot typeLot)
{
base.DeleteObject(typeLot);
}
查看
<%= Html.ActionLink("Supprimer","TypeLotRemove", new { id = item.ID} )%>
当我点击链接时,我被重定向到TypeLotRemove/420c039f-516e-40c5-916f-6da222eb50ae
,所以我有一个404错误(正常原因是我没有TypeLotRemove文件),什么也没做。我错过了什么?
问题是,当您用[HttpPost]
动词修饰ActionMethod
时,您只是在生成指向ActionMethod
的链接。这意味着该ActionMethod
只能通过POST
请求来访问。
在这种情况下,使用[HttpPost]
是有意义的,所以只需在您的视图中这样做:
@using(Html.BeginForm("TypeLotRemove", "Controller", FormMethod.Post)
{
// Your form and submit
}
mstaesen在评论中还指出,您正试图再次访问URL /TypeLotRemove/1
,这是一个GET
请求,但您传递的参数(在本例中为1
)不是您在ActionMethod
中需要的GUID
将方法TypeLotRemove 中的HttPost
更改为HttpGet