我正在使用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");
}
那是什么给出的?我在这里错过了什么吗?
答案 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]
过滤器