Asp.net mvc 为什么在控制器上找不到操作发生异常

Asp.net mvc 为什么在控制器上找不到操作发生异常,asp.net-mvc,Asp.net Mvc,有这样一种情况 “。。。 我有以下代码: return RedirectToAction("Save", "RequestFinishedDocument", new {requestId = requestFinished.Request_ID, requestFinishedId = requestFinished.ID}); 在我的控制器中,我有: public class RequestFinishedDocumentCo

有这样一种情况

“。。。 我有以下代码:

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”上找不到公共操作方法“Save”

怎么了

谢谢……”


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

我从get Action方法推测,您重定向到post Action


您不能重定向到post方法

我从get操作方法推测,您无法重定向到post操作


无法重定向到post方法

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


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

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


您的控制器有用于保存操作的post方法,但没有Get。

不,我没有。它是页面路径中的一个url,用于Ajax帖子。谷歌机器人来了,找到了它,并试图导航到它。@Jenea:如果你想在页面上留下链接,那么你应该有办法处理HTTP GET。您可以(1)保持原样并继续记录错误,(2)在[HttpPost]之外提供[HttpGet]来处理没有JavaScript的用户访问链接的情况,或者(3)从页面中删除链接(并通过JavaScript添加)。不,我没有。它是页面路径中的一个url,用于Ajax帖子。谷歌机器人来了,找到了它,并试图导航到它。@Jenea:如果你想在页面上留下链接,那么你应该有办法处理HTTP GET。您可以(1)保持原样并继续记录错误,(2)在[HttpPost]之外提供[HttpGet]来处理没有JavaScript的用户访问链接的情况,或者(3)从页面中删除链接(并通过JavaScript添加)。不,我没有。它是页面路径中的一个url,用于Ajax帖子。Google bot找到它并尝试导航到它。我在所示代码中看到,RedirectToAction会将您重定向到get方法,在您的示例中,它试图将您重定向到httpGet保存方法,因为您没有在控制器中定义httpGet保存方法,它会抛出一个错误。不,我没有。它是页面路径中的一个url,用于Ajax帖子。Google bot找到它并尝试导航到它。我在显示的代码中看到,RedirectToAction会将您重定向到get方法,在您的示例中,它试图将您重定向到httpGet保存方法,因为您没有在控制器中定义httpGet保存方法,它会抛出一个错误。我查看了引用的问题。当前的答案与您的案例有什么不同?RedirectToAction是一个get,因此它无法看到保存的HttpPost属性操作。当前的答案与您的案例有什么不同?RedirectToAction是一个get,因此它无法看到保存的HttpPost属性化操作。