0
ように私は_layoutロードメニューを持っている:私はアクションフィルタとのセッションを確認するアクションMenuRoleで子アクションは、アクションをリダイレクトを実行するために許可されていません - MVC
...
@Html.Action("MenuRole","Menu")
...
:
[CheckSession]
[ChildActionOnly]
public ActionResult MenuRole()
{
....
return PartialView("_LoadMenu",menuModel);
//_LoadMenu is partial view to show menurole
}
そしてアクションフィルタで:
public class CheckSession : ActionFilterAttribute, IActionFilter
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var ctx = filterContext.HttpContext;
//if Session == null => Login page
if (ctx.Session["Username"] == null)
{
filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new { action = "Index", controller = "Login" }));
}
base.OnActionExecuting(filterContext);
}
}
すると、セッションタイムアウト、@ Html.Action( "MenuRole"、 "メニュー")で_layoutショーエラー:子アクションはアクション
を解決
メッセージは自明です - 'ChildActionOnly'(' Session ["Username"] 'が' null'ならばあなたがしている)のメソッドで 'RedirectToRouteResult()'を使うことはできません。 –
私はそれを知っています。それ以外の方法はありますか? –
新しいRedirectToRouteResult(new RouteValueDictionary(new {action = "Index"、controller = "Login"}));ビューが既にレンダリングされた後に実行されました。おそらく '@ Html.Action'の代わりに' @ Url.Action'を使用するとこの問題を解決するかもしれません。 –