【问题标题】:A public action method 'index​' was not found on controller in mvc在 mvc 的控制器上找不到公共操作方法“索引”
【发布时间】:2014-09-12 16:51:58
【问题描述】:

我有如下操作方法,没有在操作中提到任何 HTTP GET 和 POST。

    public ActionResult Index(bool isTemplate = false)
    {
        ViewBag.isTemplate = isTemplate;
        return this.View("Index");
    }

由于某种奇怪的原因,我遇到了异常

System.Web.HttpException (0x80004005): A public action method 'index​' was not found on controller 'Nalco.enVision.Web.Areas.Reporting.Controllers.ReportController'.
   at System.Web.Mvc.Controller.HandleUnknownAction(String actionName)
   at System.Web.Mvc.Controller.<BeginExecuteCore>b__1d(IAsyncResult asyncResult, ExecuteCoreState innerState)
   at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult)
   at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase`1.End()
   at System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult)
   at System.Web.Mvc.Controller.<BeginExecute>b__15(IAsyncResult asyncResult, Controller controller)
   at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult)
   at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase`1.End()
   at System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult)
   at System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult)
   at System.Web.Mvc.MvcHandler.<BeginProcessRequest>b__5(IAsyncResult asyncResult, ProcessRequestState innerState)
   at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult)
   at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase`1.End()
   at System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult)
   at System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result)
   at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

为什么我会间歇性地收到此错误?

【问题讨论】:

  • 你怎么称呼这个动作?控制器类有哪些属性?
  • 我认为你的退货线路太多了。尝试缩短它以返回 View();
  • 您是否使用以下网址调用它:/reporting/report ?

标签: asp.net-mvc action public


【解决方案1】:

试试这个:

public ActionResult Index(bool isTemplate = false)    {
        ViewBag.isTemplate = isTemplate;
        return View();
    }

【讨论】:

    【解决方案2】:

    假设 ActionResult 方法在您的 ReportController 中,请将您的 return 语句更改为:

    return View();
    

    【讨论】:

      【解决方案3】:

      我也遇到了同样的错误,因为我调用的页面/操作方法需要身份验证,所以我只是在方法上方添加了属性

      [AllowAnonymous]
      Public ActionResult Index()
      {
          return View();
      }
      

      【讨论】:

        【解决方案4】:

        我不确定您是如何调用此操作的,但是当视图未回发给自身时,我遇到了此问题。

        换句话说,在您的示例中,您有一个名为 ReportController 的控制器和一个名为 Index.cshtml 的视图。如果有不同的视图,请说具有用于发布到 Report/Index.cshtml 的表单的 Different.cshtml,如下所示:

        @Html.BeginForm("Index", "ReportController", FormMethod.Post)
        

        然后尝试回发到不同的操作,然后是 ReportController 中的 RedirectToAction 索引。 上面的代码将变成:

        @Html.BeginForm()
        

        看看这是否能让你通过“在控制器 Y 上找不到公共操作方法 X”

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-06-01
          • 2013-05-15
          • 2021-02-28
          • 2012-05-31
          • 1970-01-01
          相关资源
          最近更新 更多