我收到以下错误消息,
公共操作方法“RenderMenu”
在控制器上找不到
'Web.Controllers.SiteController'。
然而,这个操作确实存在,控制器也确实存在(因为它在网站上的任何地方都可以工作),我查看了内部异常。
子请求执行失败。
请检查 InnerException
更多信息。
(这是内部异常...)
堆栈跟踪
在
System.Web.Mvc.HttpHandlerUtil.ServerExecuteHttpHandlerWrapper.Wrap[TResult](Func`1
函数)在
System.Web.HttpServerUtility.ExecuteInternal(IHttpHandler
处理程序、TextWriter 编写器、布尔值
keepForm, 布尔值 setPreviousPage,
VirtualPath 路径、VirtualPath
文件路径、字符串 physPath、异常
错误,字符串 queryStringOverride)
现在,我们已经设置了一个带有动态菜单系统的网站,因此我们在通用控制器上使用 RenderAction() 来构建此菜单系统。
<% Html.RenderAction("RenderMenu", "Site"); %>
这个调用是从 MasterPage 进行的,它工作正常,直到出现像这样的验证错误,
[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 方法适用于整个网站(这是我们添加的第一个表单)
有什么建议么?
Fixed:
RenderAction() 方法如下
[HttpGet]
public ActionResult RenderMenu()
{
//Do Stuff
}
删除 HttpGet 属性已解决该问题。
public ActionResult RenderMenu()
{
//Do Stuff
}
很想知道为什么?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)