instead of putting your HttpContext.Request.IsAuthenticated
in Controller level you should put it in Controller Base class that will be inherited in all of your controller with an override method of OnActionExecuting() method.
In your Controller base you should have
public class BaseController : Controller
{
protected override void OnActionExecuting(ActionExecutingContext ctx) {
base.OnActionExecuting(ctx);
ViewData["IsAuthenticated"] = HttpContext.Request.IsAuthenticated;
}
}
and all your Controller should inherit the BaseController class
public class ApplicationController : BaseController
now you should get the ViewData["IsAuthenticated"]
in your Master page.
Edit
With the link you have given, and relating to what you have done, your ApplicationController
is a Page Controller, not a Base Controller. In the example, ApplicationController
is a Base Controller that is inherited by the HomeController
but what you have done is you are placing the Action method inside your base controller which is the ApplicationController
so your Action Index method will not be invoked when you call any page (Index page) that is not from the ApplicationController.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…