后面的ASP/C#代码无法通过标记达到控制

LMW*_*-HH 6 c# asp.net controltemplates sharepoint-2010

问题:
我有这样的标记(只有重要的行):

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="RTDeluxe.ascx.cs"
Inherits="MainSolution.CONTROLTEMPLATES.Kunde.RTDeluxe" %>
<ul id="linkUl" class="teaserLinksUL" runat="server"/>
Run Code Online (Sandbox Code Playgroud)

代码隐藏:

namespace MainSolution.CONTROLTEMPLATES.Kunde
public partial class RTDeluxe : UserControl
{
    protected void Page_Load(object sender, EventArgs e)
    {
        linkUl.InnerHtml = string.Empty;
    }
}
Run Code Online (Sandbox Code Playgroud)

我可以访问ul代码隐藏的内部并且不会出现编译错误.但是,当我调试代码时,我得到一个NullReferenceException因为linkUl是NULL.

首先,我认为名称空间是原因.但是,经过几次尝试,我确信它们是正确的.在FileLocation似乎是正确的,并且controltemplates我的IIS的文件夹中有与它相应的ascx文件"孔德"文件夹中.

我有其他.ascx文件具有相同的结构 - >他们的工作就像一个魅力.

问题:
这种行为的名称空间还有其他原因吗?你有任何我可以看到的提示吗?

编辑:
RTDeluxe.ascx.designer.cs文件存在,生成的linkUl如下所示:

protected global::System.Web.UI.HtmlControls.HtmlGenericControl linkUl;
Run Code Online (Sandbox Code Playgroud)

编辑2:
好的,我会尽力回答你的所有问题.感谢您的时间和反馈!

  1. 我重新启动了Visual Studio - >问题仍然存在.
  2. 我也已经清理了解决方案并部署了一个新解决方案. - >问题仍然存在.
  3. 当我调试并检查控件层次时,我可以看到标签不在那里.
  4. 当我更改ID时,编译器会在代码隐藏中抛出错误(这是正确的).如果我更改了ID,我会得到与之前相同的行为.
  5. 我也重新启动了我的IIS和整个电脑 - >没有变化.
  6. Name在linkul-definition中添加了一个属性 - >没有更改.
  7. 当我尝试使用FindControl它时返回NULL.
  8. 目标框架是.NET 3.5
  9. linkul不在转发器或任何其他控件内.
  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"/>
Run Code Online (Sandbox Code Playgroud)

*Edit4:
好的,我发现了一些额外的信息:当我在标记中更改某些内容时,例如添加普通的html文本,它不会被浏览器识别或显示.当我做这样的事情:

   Label label1 = new Label();
   label1.Text = "hugo lives!";
   Controls.Add(label1);
Run Code Online (Sandbox Code Playgroud)

它显示.在视觉工作室中似乎一切都很好......但是在服务器上"活",代码隐藏对一些奇怪的不同标记说话......

Roh*_*agh 1

这可能对你有一点帮助:

在类级别用户控件的代码隐藏文件中,添加以下代码:

protected global::System.Web.UI.HtmlControls.HtmlGenericControl linkUl = new System.Web.UI.HtmlControls.HtmlGenericControl();
Run Code Online (Sandbox Code Playgroud)

protected global::System.Web.UI.HtmlControls.HtmlGenericControl linkUl;并从RTDeluxe.ascx.designer.cs文件中删除

可能是因为它的对象只是声明而不是创建。希望这可以帮助..