Указатель NULL
- это тот, который указывает на никуда. Когда вы разыскиваете указатель p
, вы говорите «дайте мне данные в месте, хранящемся в« p ». Когда p
является нулевым указателем, местоположение, хранящееся в p
, является nowhere
, вы говорите «Дайте мне данные в месте« нигде ». Очевидно, он не может этого сделать, поэтому он выбрасывает NULL pointer exception
.
В общем, это потому, что что-то не было правильно инициализировано.
В Asp.net 3.5 вы должны иметь возможность установить тег Link в заголовке как тег сервера. Затем в codebehind вы можете установить свойство href для элемента link на основе значения cookie, строки запроса, даты и т. Д.
В вашем файле aspx:
<head>
<link id="linkStyles" rel="stylesheet" type="text/css" runat="server" />
</head>
И в коде позади:
protected void Page_Load(object sender, EventArgs e) {
string stylesheetAddress = // logic to determine stylesheet
linkStyles.Href = stylesheetAddress;
}
Необходимо изучить ASP.NET
темы, это точно, для чего они используются. Они также позволяют Вам средствам управления кожи, что означает, дают им ряд атрибутов по умолчанию.
Я предложил бы хранить выбор таблицы стилей на сессии, таким образом, Вы не должны полагаться на querystring ключ, присутствующий все время. Можно проверить сессию в Page_Load и добавить соответствующую ссылку таблицы стилей. Это кажется, что это - временная ситуация / ситуация с разработкой, поэтому пойдите с тем, что легко и работы.
if (!String.IsNullOrEmpty(Request.QueryString["css"]))
Session.Add("CSS",Request.QueryString["css"]);
Я сделал бы следующее:
www.website.com/?stylesheet=new.css
Тогда в Вашем коде ASP.NET:
if (Request.Querystring["stylesheet"] != null) {
Response.Cookies["stylesheet"].Value = Request.QueryString["stylesheet"];
Response.Redirect(<Current Page>);
}
Тогда, где Вы определяете свои таблицы стилей:
if (Request.Cookies["stylesheet"] != null) {
// New Stylesheet
} else {
// Default
}