我的一个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