在控制器'Y'上找不到公共操作方法'X'

时间:2014-02-12 07:54:56

标签: c# asp.net-mvc-4 razor

我知道这可能是一个容易回答的简单问题,但我已经尝试了所有解决方案并且它无法正常工作。

我有一个actionlink:

@Html.ActionLink("Sales List", "AllSales", "ROI", new { result_Type = "All" })

但是当我点击它时,将ROI控制器更改为HomeController并发出以下错误:

 A public action method 'AllSales' was not found on controller
 'ROI.Controllers.HomeController'. 

我不知道这是什么问题。我的行动metghod AllSales如下:

public ActionResult AllSales(string result_Type)
{
  ViewData["result_Type"] = result_Type;
  return View();            
}

和“AllSales”视图正在呈现如下的部分视图:

@{
    ViewBag.Title = "AllSales";
    Layout = "~/Views/Shared/_Layout.cshtml";
}
    @{Html.RenderPartial("_SelectAllSales", new { result_Type = 
           ViewData["result_Type"].ToString() });}

帮帮我,我不知道是什么问题。 注意:如果我在没有任何参数的情况下渲染“AllSales”视图,它工作正常。

1 个答案:

答案 0 :(得分:3)

您没有正确使用ActionLink帮助程序。没有ActionLink(HtmlHelper, String, String, String, Object)的重载版本。但是,ActionLink(HtmlHelper, String, String, Object, Object)版本与您的通话匹配。第一个Object参数是您设置控制器名称但被解释为路由值对象的位置。因此,引擎会重定向到Home控制器。

请改用:

@Html.ActionLink("Sales List", "AllSales", "ROI", new { result_Type = "All" }, null)

这将与ActionLink(HtmlHelper, String, String, String, Object, Object)匹配,并允许您指定控制器。