为什么我的控制器中的任何新Action方法都有404?

时间:2013-06-12 18:05:17

标签: c# asp.net-mvc routing

在ASP.NET MVC 4项目中,我添加了一个带有EF类的脚手架的MVC控制器。即,CRUD操作。他们都工作。如果我手动添加动作方法,将Html.ActionLink()添加到指向它们的视图中,我会收到404错误。

例如,在我的控制器中,我添加了AddImage方法:

public ActionResult AddImage(int id)
{
    var car = db.Cars.Find(id);
    return View("AddImage",car);
} 

这只返回一个视图,用于添加与Car对象关联的图像。在相应的Index.cshtml中,我添加:

@Ajax.ActionLink("Add Image", "AddImage", new { id = item.CarId }, new AjaxOptions { UpdateTargetId = "modal",OnSuccess="showDialog" })

当它呈现时,在控制台中,当单击该链接时,我看到404。另一个奇怪的事情是,当我在调试器中运行时,方法中设置的断点是空洞的,带有一个警告图标,表示没有可执行代码与此行关联。

我没有在RouteConfig中添加任何东西:它只有Default,它应该可以工作。我有一个带有HttpPost属性的重载,但即使没有它,我仍然得到404。

在以前的项目中,我可以使用Action方法而不受惩罚,而且它们都可以工作。那么这里的问题是什么?

请帮忙,Stackoverflow,你是我唯一的希望。

2 个答案:

答案 0 :(得分:0)

在评论的大卫的帮助下,我想我弄清楚我做了什么让我的项目处于一个奇怪的状态。简而言之:我在模型中添加了一些内容,包括添加迁移而不调用Update-Database。我尝试在没有数据库更新的情况下运行应用程序。

我没有收到错误,但是在重新启动VS之后,删除了项目的bin和obj文件夹,将输出路径更改为bin /而不是bin / Debug(在许多Stackoverflow问题上找到) ,我终于得到了正确的错误信息。

然后我运行了我的更新,瞧!工作项目。

答案 1 :(得分:0)

写这个

public ActionResult AddImage(int id)
{
    var car = db.Cars.Find(id);
    return View(car);
} 

,您的链接必须是'AddImage',没有空格

@Ajax.ActionLink("AddImage", "AddImage", new { id = item.CarId }, new AjaxOptions { UpdateTargetId = "modal",OnSuccess="showDialog" })