簡體   English   中英

ASP .NET中的MVC操作會引發404錯誤

[英]MVC action in ASP .NET throws 404 error

我必須向使用ASP .NET設計的現有應用程序中添加一個delete方法,事實是我有0個經驗。 這是我所做的:

控制器

[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的鏈接。 這意味着只能通過POST請求訪問此ActionMethod

在這種情況下,使用[HttpPost]是有意義的,因此只需在您的View中執行以下操作:

@using(Html.BeginForm("TypeLotRemove", "Controller", FormMethod.Post)
{
   // Your form and submit
}

mstaessen也在注釋中指出,您再次嘗試訪問URL /TypeLotRemove/1 ,這是一個GET請求,但您傳遞的參數(在本例中為1 )不是您在ActionMethod所需的GUID

更改HttPostHttpGet的方法TypeLotRemove

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM