問題:
このようなマークアップがあります(重要な行のみ):
<%@ 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
コンパイルエラーは発生しません。しかし、コードをデバッグすると、がNULLであるNullReferenceException
ために取得します。linkUl
まず、名前空間が理由だと思いました。しかし、何度か試した後、私はそれらが正しいと確信しています。はFileLocation
正しいようcontroltemplates
で、私のiisのフォルダーには、対応するascxファイルを含む「Kunde」フォルダーがあります。
同じ構造の他の.ascxファイルがあります->それらは魅力のように機能しています。
質問:
そのような振る舞いの名前空間以外の理由はありますか?私が見ることができるヒントはありますか?
編集:
RTDeluxe.ascx.designer.csファイルが存在し、生成されたlinkUl
ものは次のようになります。
protected global::System.Web.UI.HtmlControls.HtmlGenericControl linkUl;
Edit2:わかりまし
た、私はあなたのすべての質問に答えようとします。お手数をおかけしますが、フィードバックをお寄せいただきありがとうございます。
- VisualStudioを再起動しました->問題が解決しません。
- また、ソリューションをクリーンアップして、新しいソリューションを展開しました。->問題は解決しません。
- コントロール階層をデバッグして確認すると、ラベルがないことがわかります。
- IDを変更すると、コンパイラはコードビハインドでエラーをスローします(これは正しいです)。IDを変更すると、2つ前と同じ動作になります。
- また、IISとPC全体を再起動しました->変更なし。
Name
linkul-definition->Nochangesに属性を追加しました。- 使用しようとする
FindControl
とNULLが返されます。 - ターゲットフレームワークは.NET3.5です
- linkulは、リピーターやその他のコントロールの内部にはありません。
- web.configを削除/変更しても、解決策にはなりません。
EnsureChildControls
アクセスする前に追加してlinkUl
も何も変わりません。- コードを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ではすべてが問題ないようです...しかし、サーバーでの「ライブ」は、コードビハインドが奇妙な異なるマークアップを示しています...