добавить <%@ MasterType VirtualPath="~/Main.master" %>
к разметке вашей страницы.
и ваш this.Master
тип становится AlphaPack.MasterPages.Main
вместо System.Web.UI.MasterPage
. Таким образом, вы сможете получить к нему доступ без приведения:
this.Master.IsLoggednIn
На данный момент вам нужно сделать следующее:
((AlphaPack.MasterPages.Main)this.Master).isLoggednIn
А лучше - создать собственность. И удерживайте данные не в переменной, а в ViewState (прочитайте Состояние управления и состояние просмотра ):
namespace AlphaPack.MasterPages
{
public partial class Main : System.Web.UI.MasterPage
{
protected void Page_Load(object sender, EventArgs e)
{
this.IsLoggedIn = Request.IsAuthenticated;
}
public bool IsLoggedIn
{
get { return this.ViewState["isLoggedIn"] as bool? ?? false; }
set { this.ViewState["isLoggedIn"] = value; }
}
}
}
А как насчет кода? Я рекомендую использовать проект веб-приложения, а не проект веб-сайта (который устарел)!
Используется следующий синтаксис разметки. Веб-приложение:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="MyPage.aspx.cs" Inherits="MyNamespace.MyPage" MasterPageFile="~/MyMaster.master" Title="MyTitile" %>
и веб-сайт:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="MyPage.aspx.cs" Inherits="MyPage" MasterPageFile="~/MyMaster.master" Title="MyTitile" %>