Проблема:
У меня есть такая разметка (только важные строки):
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="RTDeluxe.ascx.cs"
Inherits="MainSolution.CONTROLTEMPLATES.Kunde.RTDeluxe" %>
<ul id="linkUl" class="teaserLinksUL" runat="server"/>
Код программной части:
namespace MainSolution.CONTROLTEMPLATES.Kunde
public partial class RTDeluxe : UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
linkUl.InnerHtml = string.Empty;
}
}
Я могу получить доступ ul
внутри кода программной части без ошибок компиляции. Но когда я отлаживаю код, я получаю NullReferenceException
, потому что linkUl
имеет значение NULL.
Сначала я подумал, что причина в пространствах имен. Но после нескольких попыток я уверен, что они правы. FileLocation
кажется правильным, а в папке controltemplates
моего iis есть папка «Kunde» с соответствующими файлами ascx в ней.
У меня есть другие файлы .ascx с такой же структурой -> они работают как шарм.
Вопрос:
Есть ли какие-либо другие причины, кроме пространства имен, для такого поведения? У вас есть какие-нибудь подсказки, где я могу посмотреть?
Edit:
Файл RTDeluxe.ascx.designer.cs существует, сгенерированный linkUl
выглядит так:
protected global::System.Web.UI.HtmlControls.HtmlGenericControl linkUl;
Edit2:
Хорошо, я постараюсь ответить на все ваши вопросы.Спасибо за ваше время и отзывы!
Имя
в определение ссылки -> Без изменений. FindControl
, он возвращает NULL. EnsureChildControls
перед доступом к linkUl
ничего не меняет. Я опробую ваши предложения, не перечисленные здесь, и скоро добавлю их.
Edit3:
Вот полная разметка:
<%@ Assembly Name="$SharePoint.Project.AssemblyFullName$" %>
<%@ Assembly Name="Microsoft.Web.CommandUI, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="RTDeluxe.ascx.cs" Inherits="MainSolution.CONTROLTEMPLATES.Kunde.RTDeluxe" %>
<ul id="linkUl" class="teaserLinksUL" runat="server"/>
* Edit4:
Хорошо, вот дополнительная информация, которую я нашел:
Когда я что-то меняю в разметке, например, добавляю простой html-текст, он НЕ распознается и НЕ отображается в браузере. Когда я делаю что-то вроде этого:
Label label1 = new Label();
label1.Text = "hugo lives!";
Controls.Add(label1);
Показывается. Вроде как в visual studio все в порядке ... Но "вживую" на сервере код программной части говорит с какой-то странной разной разметкой ...