我recieving以下錯誤消息,Asp.Net MVC:執行子請求失敗。請檢查的InnerException瞭解更多信息
公共行動方法「RenderMenu」 沒有在控制器 「Web.Controllers.SiteController」找到。
然而,這個行動確實存在,並且控制器確實存在(因爲它在網站上到處都有),我看着內部異常。
執行子請求失敗。 請檢查InnerException的 更多信息。
(這是內部異常...)
堆棧跟蹤
在 System.Web.Mvc.HttpHandlerUtil.ServerExecuteHttpHandlerWrapper.Wrap [TResult](Func`1 FUNC )at System.Web.HttpServerUtility.ExecuteInternal(IHttpHandler handler,TextWriter writer,Boolean preserveForm,Boolean setPreviousPage, VirtualPath path,VirtualPath 文件路徑,字符串physPath,異常 錯誤,字符串queryStringOverride)
現在,我們有一個網站設置了一個動態的菜單系統,所以我們的通用控制器上使用的RenderAction()來建立這個菜單系統啓動。
<% Html.RenderAction("RenderMenu", "Site"); %>
該呼叫從母版製作,直到有像這樣驗證錯誤,它工作正常,
[HttpPost]
public ActionResult Register(UserModel UserToAdd)
{
if(!ModelState.IsValid)
{
return View(UserToAdd);
}
//Run some validation
if (_UserService.DoesEmailExist(UserToAdd.EMail))
{
TempData["error"] = "Email Address Already in use!";
return View(UserToAdd);
}
//Add the user
TempData["info"] = "User Added - " + UserO.ID;
return View("Success");
}
它正常工作時,這是一個新的用戶,但如果有人進入已經存在的電子郵件,我們得到上述錯誤。這RenderAction方法遍佈整個網站(這是我們添加的第一種形式)
有什麼建議嗎?
嗯...你不應該使用RenderAction。我知道這很好,但以此來看,你的觀點會採取行動。因此你沒有正確的流程。 什麼是正確的解決方案是,在「基本」控制器中有一個代碼,將MenuModel作爲Lazy添加到ViewData中。和RenderPartial(「MenuView」,ViewData [「MenuModel」]) – cRichter 2010-07-09 11:08:24