【问题标题】:Why Action is not found on Controller exception occurs为什么发生控制器异常时找不到操作
【发布时间】:2011-10-23 22:01:39
【问题描述】:

in this question.这样的情况

"... 我有这个代码:

return RedirectToAction("Save", "RequestFinishedDocument",
                                new {requestId = requestFinished.Request_ID, requestFinishedId = requestFinished.ID});

在我的控制器中我有:

public class RequestFinishedDocumentController : Controller
{
    [HttpPost]
    public JsonResult Save(int requestId, int requestFinishedId)
    {
        //todo
    }
}

但在 RedirectToAction 调用中,我收到异常消息:在控制器“SuiP.Controllers.RequestFinishedDocumentController”上找不到公共操作方法“保存”。

怎么了?

谢谢...”

如果操作具有 HttpPost 属性而不是路由来捕获所有显示未找到页面的路由,为什么 asp.net mvc 会抛出异常“找不到操作....”。

【问题讨论】:

  • 我查看了引用的问题。您的案例的当前答案有何不同? RedirectToAction 是一个 get,因此它看不到 Save 的 HttpPost 属性操作。

标签: asp.net-mvc


【解决方案1】:

您重定向到 post 操作,我推测来自 get 操作方法。

你不能重定向到 post 方法

【讨论】:

  • 不,我没有。它是页面路径中的一个 url,用于 Ajax 帖子。 Google bot 找到它并尝试导航到它。
  • @Jenea:如果您要将链接留在页面上,那么您应该有一种方法来处理 HTTP GET。您可以 (1) 保持原样并继续记录错误,(2) 在 [HttpPost] 之外提供 [HttpGet] 以处理没有 JavaScript 的用户访问链接的情况,或 (3) 删除页面中的链接(并通过 JavaScript 添加。)
【解决方案2】:

看起来您正在重定向到 get 方法。

您的控制器有一个用于 Save 操作的 post 方法,但没有一个 Get。

【讨论】:

  • 不,我没有。它是页面路径中的一个 url,用于 Ajax 帖子。 Google bot 找到它并尝试导航到它。
  • 对于我在显示的代码中看到的内容,RedirectToAction 会将您重定向到 get 方法,在您的示例中试图将您重定向到 httpGet Save 方法,因为您尚未定义 httpGet Save控制器中的方法会引发错误。
猜你喜欢
  • 1970-01-01
  • 2016-02-01
  • 1970-01-01
  • 2012-09-18
  • 1970-01-01
  • 2010-10-18
  • 2011-04-08
  • 2011-10-01
相关资源
最近更新 更多