在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,你是我唯一的希望。
答案 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" })