我的一個POST動作是拋出HTTP 404錯誤。我已經在最近幾個小時了,不知道有什麼問題!同一控制器中的所有其他操作都可以正常工作。我很確定拼寫是正確的。在調試模式下,這種方法從來沒有被打(很明顯,我猜)。請幫忙。在ASP.NET MVC4中找不到控制器的動作-HTTP 404錯誤
這裏的操作方法 -
public class LookupTableController : Controller
{
[HttpPost]
public ActionResult AjaxLookupTableCRUDDelete(int lookupId)
{
LookupTable lookuptable = db.LookupTables.Find(lookupId);
if (lookuptable != null)
{
db.LookupTables.Remove(lookuptable);
db.SaveChanges();
}
return Index();
}
無論我怎樣嘗試訪問它,它拋出404錯誤!
我試過直接在瀏覽器上 - http://localhost:60328/LookupTable/AjaxLookupTableCRUDDelete/?lookupId=111
,
這表明 -
>Server Error in '/' Application.
的資源不能被發現。 描述:HTTP 404.您正在查找的資源(或其中一個>依賴項)可能已被刪除,名稱已更改或暫時不可用。請檢查以下網址並確保它拼寫正確。
請求的URL:/ LookupTable中/ AjaxLookupTableCRUDDelete/
的Fiddler -
接頭 - POST/LookupTable中/ AjaxLookupTableCRUDDelete lookupId所= 13 HTTP/1.1
[HttpException]: A public action method 'AjaxLookupTableCRUDDelete' was >not found on controller 'GBPReconTool.Controllers.LookupTableController'.
路由是標準 -
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
已解決 - 謝謝你,結果是GET和POST問題。 - 當我第一次編譯它時,它沒有HTTPGet或HTTPPost屬性。我不確定ASP.NET MVC4如何確定它應該是什麼。無論如何,明確的POST ajax調用失敗並開始直接在瀏覽器中進行測試。瀏覽器顯然是把它發佈爲GET。我仍然不清楚這是如何確定的,但我猜想將HTTPPost屬性添加到控制器是最終修復它的原因。猜猜我會讀到ASP.NET和瀏覽器如何確定操作是GET還是POST。
嘗試快速測試:更改此動作以接受GET動詞,並嘗試通過querystring達到此操作:http:// localhost:60328/LookupTable/AjaxLookupTableCRUDDelete?lookupId = 111, –
@Thiago Custodio - 我只是試着改變要得到。現在它說這是當我將操作改爲GET時顯示的內容 - 「視圖'AjaxLookupTableCRUDDelete'或其主控沒有被找到或沒有視圖>引擎支持搜索到的位置。搜索到以下位置:...」 – Achilles