Код ASP / C # не может управлять с помощью разметки

Проблема:
У меня есть такая разметка (только важные строки):

<%@ 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:
Хорошо, я постараюсь ответить на все ваши вопросы.Спасибо за ваше время и отзывы!

  1. Я перезапустил Visual Studio -> Проблема не устранена.
  2. Я также очистил решение и развернул новое. -> Проблема не устранена.
  3. Когда я отлаживаю и проверяю иерархию элементов управления, я вижу, что метки НЕТ.
  4. Когда я меняю идентификатор, компилятор выдает ошибку в коде программной части (что верно). Если я изменю ID там два, я получу то же поведение, что и раньше.
  5. Я также перезапустил свой IIS и весь компьютер -> Без изменений.
  6. Я добавил атрибут Имя в определение ссылки -> Без изменений.
  7. Когда я пытаюсь использовать FindControl , он возвращает NULL.
  8. Целевая платформа - .NET 3.5
  9. Ссылка НЕ ​​находится внутри повторителя или каких-либо других элементов управления.
  10. Удаление / изменение web.config также не приводит к решению.
  11. Добавление EnsureChildControls перед доступом к linkUl ничего не меняет.
  12. Перемещение кода в Page_PreRender также не работает.

Я опробую ваши предложения, не перечисленные здесь, и скоро добавлю их.

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 все в порядке ... Но "вживую" на сервере код программной части говорит с какой-то странной разной разметкой ...

6
задан LMW-HH 9 January 2012 в 16:53
поделиться