2014-02-12 72 views
0

我知道这可能是一个简单的问题,但答案很简单,但我尝试了所有大多数解决方案,并且它不工作。在控制器'Y'上没有找到公共操作方法'X'

我有一个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'. 

我dont't知道有什么问题。我的动作metghod AllSales情况如下:

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

和“AllSales”视图渲染partialview象下面这样:

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

帮助我,我不知道是什么的问题。 注意:如果我呈现没有任何参数的“AllSales”视图,它工作正常。

+0

可能是偶然的,而不是原因:在动作链接中键入'resultType',而在该方法中,参数名称是'result_Type'。 – Markus

+0

@Markus这不是问题。 – Dhwani

回答

3

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

使用这个代替:

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

这将匹配ActionLink(HtmlHelper, String, String, String, Object, Object)并会让你还可以指定控制器。

+0

手段?我做错了什么? – Dhwani

+0

Gr8。这是工作。我认为最后一个参数是可选的。 – Dhwani

+0

@DKS,没有这样的东西:)。由于该成员过载,参数的数量和类型起着非常重要的作用。幸运的是,你可以传递'null'并告诉Razor你不需要这个参数。 –

相关问题