ASP .NET中的MVC操作引发404错误

时间:2015-10-28 08:34:19

标签: c# asp.net asp.net-mvc

我必须为使用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文件)并且没有做任何事情。我错过了什么?

2 个答案:

答案 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}}