我必须为使用ASP .NET设计的现有应用程序添加一个删除方法,事情是我有0经验。这就是我所做的:
CONTROLLER
[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");
}
REPOSITORY
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文件)并且没有做任何事情。我错过了什么?
答案 0 :(得分:2)
问题是,当您使用ActionMethod
动词修饰ActionMethod
时,您只是生成了[HttpPost]
的链接。这意味着只能通过ActionMethod
请求访问此POST
。
在这种情况下使用[HttpPost]
是有意义的,所以只需在您的视图中执行此操作:
@using(Html.BeginForm("TypeLotRemove", "Controller", FormMethod.Post)
{
// Your form and submit
}
mstaessen在评论中也指出您尝试再次访问网址/TypeLotRemove/1
这是GET
请求,但您传递的参数(在本例中为1
)是不是GUID
ActionMethod
答案 1 :(得分:1)
在方法TypeLotRemove
中更改HttPost
的{{1}}