Lia*_*amB 6 validation asp.net-mvc-2
我收到以下错误消息,
在控制器'Web.Controllers.SiteController'上找不到公共操作方法'RenderMenu'.
但是这个动作确实存在并且控制器确实存在(因为它在网站上的任何地方工作)我查看了内部异常.
执行子请求失败.请查看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 filePath,String physPath) ,异常错误,String queryStringOverride)
现在,我们有一个带有动态菜单系统的网站设置,所以我们在通用控制器上使用RenderAction()来构建这个菜单系统.
<% Html.RenderAction("RenderMenu", "Site"); %>
Run Code Online (Sandbox Code Playgroud)
此调用是从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");
}
Run Code Online (Sandbox Code Playgroud)
当这是一个新用户时,它工作正常,但如果有人输入已存在的电子邮件,我们会收到上述错误.这个RenderAction方法适用于整个站点(这是我们添加的第一个表单)
有什么建议?
固定:
RenderAction()方法如下
[HttpGet]
public ActionResult RenderMenu()
{
//Do Stuff
}
Run Code Online (Sandbox Code Playgroud)
删除HttpGet属性已解决此问题.
public ActionResult RenderMenu()
{
//Do Stuff
}
Run Code Online (Sandbox Code Playgroud)
很想知道为什么?