动态选择主题

时间:2017-08-06 13:13:19

标签: c# asp.net webforms

NET,我最近自己买了一本书,并尝试按照练习进行操作。

我知道您可以通过添加“主题”属性在Web配置文件的标记中应用主题,但是下面的练习是从下拉列表中选择一个我无法理解的主题,并且是根本不适合我。

这是主页cs代码(Book的代码)

namespace WebApplication7
{
    public partial class SiteMaster : MasterPage
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                string selectedTheme = Page.Theme;
                HttpCookie preferredTheme = Request.Cookies.Get("PreferredTheme");
                if (preferredTheme != null)
                {
                    selectedTheme = preferredTheme.Value;
                }
                if (!string.IsNullOrEmpty(selectedTheme))
                {
                    ListItem item = ThemeList.Items.FindByValue(selectedTheme);
                    if (item != null)
                    {
                        item.Selected = true;
                    }
                }
            }

        }

        protected void Theme_SelectedIndexChanged(object sender, EventArgs e)
        {
            HttpCookie preferredTheme = new HttpCookie("PreferredTheme");
            preferredTheme.Expires = DateTime.Now.AddMonths(3);
            preferredTheme.Value = ThemeList.SelectedValue;
            Response.Cookies.Add(preferredTheme);
            Response.Redirect(Request.Url.ToString());
        }
    }
}

这是下拉列表

<asp:DropDownList ID="ThemeList" runat="server" OnSelectedIndexChanged="Theme_SelectedIndexChanged" AutoPostBack="True">
                        <asp:ListItem Value="monochrome" >Monochrome</asp:ListItem>
                        <asp:ListItem Value="colors">Colors</asp:ListItem>
                    </asp:DropDownList>

这是“Beginning ASP.NET 4.5.1:in C#and VB”

一书的一个例子

这本书没有提到任何遗漏的步骤,说实话我不明白下拉列表“indexchanged”是如何链接到我在App_Themes文件夹中创建的主题。我只是假设这与“Page.Theme”有关。

提前致谢。

2 个答案:

答案 0 :(得分:0)

The book包含以下代码:

set the theme

设置主题。

我怀疑你应该阅读整章,你需要做所有这些才能使它发挥作用。你也可以阅读entire source code(与你的相比)。

答案 1 :(得分:0)

是的我必须创建一个新的Asp.net文件夹,然后创建一个App_Code文件夹,创建一个BasePage.cs文件夹,右键单击并设置该文件进行编译,复制并粘贴BasePage.cs中缺少的代码。

在所有我的aspx页面中将所有继承从Page到BasePage应用完毕后。

感谢您的回答。