我的主控制器上的索引操作是我的MVC 3应用程序的入口点。当我尝试重定向到此操作中的另一个视图时,我在布局视图上的Html.Action中收到'子操作不允许执行重定向操作'错误。我没有从子视图重定向,所以任何人都可以解释为什么我会得到这个错误。这只发生在我的家用控制器的索引动作上,任何其他控制器上的任何其他动作,包括家用控制器都能正常工作。应用程序切入点 - 子操作不允许执行重定向操作
首页控制器:
public class HomeController : Controller
{
public ActionResult Index()
{
if ([some logic to lookup user] = 0)
return View("UserNotFound");
else
return view();
}
}
@布局Html.Action:
@Html.Action("BuildMenu", "Menu", new { menu = @ViewBag.Menu })
的Global.asax:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
}
菜单控制器:
[AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post)]
[ChildActionOnly]
public ActionResult BuildMenu(string menu)
{
var model = new ViewModels.MenuViewModel()
{
Menu = menu,
ShowCreateNew = BL.Permissions.CheckUserPermission(this.UserDetails.UserId, this.UserDetails.RoleId, BL.Common.permission_AddNewRisk),
ShowAdmin = BL.Permissions.CheckUserPermission(this.UserDetails.UserId, this.UserDetails.RoleId, BL.Common.permission_AdminRights)
};
return PartialView("_Menu", model);
}
请问您可以把'BuildMenu'和'UserNotFound'操作方法的代码? – Haritha
重定向应发生在控制器操作本身中,而不是从视图中调用的另一个操作中。也许你想用'RedirectToAction(“UserNotFound”)来代替渲染另一个视图。 –
嗨,该视图只是显示错误消息的共享文件夹的空白视图。重定向确实发生在控制器中。 – Wilky