1

在一个 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 添加任何内容:它只有默认值,它应该可以工作。我有一个 HttpPost 属性的重载,但即使没有它,我仍然得到 404。

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

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

4

2 回答 2

0

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

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

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

于 2013-06-12T18:36:56.997 回答
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" })
于 2013-06-12T19:18:47.817 回答