这是我的母版页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,但我不知道为什么;我有一个深灰色的应用主题。如果有人能帮助我,我将非常感激。
答案 0 :(得分:0)
我没有在您的标记中的任何位置看到Menu1
或TreeView1
。如果它们位于内容页面中,则您无法访问MasterPage代码隐藏中的内容(可能有一种方法,但您无法按照您尝试的方式直接访问它们)。