MVC2抱怨它无法在控制器上找到公共操作方法,即使它存在

时间:2012-08-16 15:21:43

标签: c# asp.net-mvc-2

我正在使用MVC2和VS2008,以及视图中的以下代码〜/ Shared / Site.Master:

<ul id="navlist">
            <li class="first"><a href="<%= Url.Content("~")%>" id="current">Home</a></li>
            <li><a href="<%= Url.Content("~/Store/")%>">Store</a></li>
            <li>
                **<% Html.RenderAction("CartSummary","ShoppingCart"); %></li>**
            <li><a href="<%= Url.Content("~/StoreManager/") %>">Admin</a></li>
        </ul>

抛出以下异常:

  

执行处理程序的子请求时出错   'System.Web.Mvc.HttpHandlerUtil + ServerExecuteHttpHandlerAsyncWrapper'。

有这个内部异常:

  

“控制器上找不到公共操作方法'CartSummary'   'MvcMusicStore.Controllers.ShoppingCartController'。“

......这没有任何意义。 “CartSummary”方法定义如下:

// GET: /ShoppingCart/CartSummary
[NHibernateActionFilter]
[ChildActionOnly]
[HttpGet]
public ActionResult CartSummary()
{
    var cart = ShoppingCart.GetCart(this.HttpContext, this.NSession);

    ViewData["CartCount"] = cart.GetCount();

    return PartialView("CartSummary");
}

那是什么给出的?我在这里错过了什么吗?

3 个答案:

答案 0 :(得分:5)

如果从子操作中删除[HttpGet]属性会怎样?

如果我是正确的,将使用与调用“主要动作”相同的HTTP动词调用子动作。

答案 1 :(得分:0)

@Cosmo ...是控制器'ShoppingCartController'或ShoppingCart的名称。如果它是'ShoppingCartController',则html.RenderAction将barf,因为Controller名称将不正确。

更改为: Html.RenderAction( “CartSummary”, “ShoppingCartController”);

答案 2 :(得分:0)

Html.RenderAction更改为Html.Action或删除[ChildActionOnly]过滤器