asp.net - 对象引用未设置为母版页cs文件的对象实例

时间:2015-02-14 05:55:45

标签: asp.net

这是我的母版页cs文件的代码。出于某种原因,当我运行我的默认页面时,我收到一条错误,指出"对象引用没有设置为对象的实例。"

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Theming.MasterPages
{
public partial class Main : System.Web.UI.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;
                }
            }
        }
        switch (Page.Theme.ToLower())
        {
            case "darkgrey":
                Menu1.Visible = false;
                TreeView1.Visible = true;
                break;
            default:
                Menu1.Visible = true;
                TreeView1.Visible = false;
                break;
        }
    }

    protected void ThemeList_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());
     }
  }
}

错误似乎出现在switch语句中,但我无法弄清楚原因。我在其他帖子上读过,这个值赋值给null,但我不知道为什么;我有一个深灰色的应用主题。如果有人能帮助我,我将非常感激。

1 个答案:

答案 0 :(得分:0)

我没有在您的标记中的任何位置看到Menu1TreeView1。如果它们位于内容页面中,则您无法访问MasterPage代码隐藏中的内容(可能有一种方法,但您无法按照您尝试的方式直接访问它们)。