これは私がこのサイトで尋ねる最初の質問です。そのため、前もって作ったごまかしをお詫びしますが、できる限りこの質問をするように努めます。
私の問題を説明するのは少し難しいと思いますが、要約すると次のようになります。
Web サービスから XML ファイルを取得し、XSLT を使用してそれを HTML の大きな文字列に変換することによって生成された HTML の大きな文字列があります。次に、それを Control コレクションに解析し、いくつかのイベント ハンドラーを追加して、それを HTMLPlaceholder に追加すると、すべてが正常に機能します。
ただし、この HTML 文字列には私の Web サイト全体がほとんど含まれており、すべてのマークアップを一度に処理できないハンド ターミナルで実行されているため、送信するマークアップをフィルター処理していますが、これには問題があります。
Div
Div
保持したい要素を失うことなく要素を除外することはできません。これは、Parsecontrol がDiv
要素を半分に切り刻み、br
要素ごとに並べ替えられた Literalcontrols に変換するためです。
私のコードを表示するのは少し難しいですが、何が起こるかの例を次に示します:
//html contains the auto generated HTML
ctrl = ParseControl (html);
for ( int i = ctrl.Controls.Count - 1 ; i >= 0 ; --i )
{
string MenuId = "";
Control theControl = ctrl.Controls[i];
if ( theControl is Button )
// Code that filters buttons
if ( theControl is TextBox)
// Code that filters textboxes
if ( theControl is LiteralControl )
{
LiteralControl literal = theControl as LiteralControl;
//This checks if the Div element I'm looking for exists
//If it does, I want to keep it
bool contains = literal.Text.Contains ("<div id=\"" + ParentDiv);
if ( contains )
MenuId = ParentDiv;
}
if ( MenuId != ParentDiv )
{
ctrl.Controls.RemoveAt (i);
}
}
問題が発生するのは、LiteralControl 部分に到達したときです。ボタンとテキストフィールドは正常に機能します。ただし、LiteralControl は、私の Div 要素を半分に切り刻み、要素によってフィルター処理されbr
ます。私div
の要素は次のようになります(簡潔にするために編集):
<div class="hide" id="TB_24000" >
<br>
<Textbox elements>
<Button elements>
<Label elements>
<br>
<Textbox elements>
<Button elements>
<Label elements>
<br>
<input type="button" id="btnBack" value="Tilbage" class="BackandResetButtons" onclick="backButton(this,document.getElementById('MenuLevel1'),document.getElementById('TB_24000')); return false;"></div>
しかし、私の LiteralControl 要素は次のようになります (未編集):
<br><input type="button" id="btnBack" value="Tilbage" class="BackandResetButtons" onclick="backButton(this, document.getElementById('TB_33999'),document.getElementById('TB_38400'));
 "></div>
そして次:
<br><label class="label">FRAGT</label><br>
そして次:
<br><label class="label">SPEDITØR</label><br>
ご覧のとおり、私の LiteralControls はbr
要素に基づいていますが、問題は、要素に基づいてフィルター処理したいことですDiv
。ただし、汚い、率直に言って望ましくないハッキングに頼らない限り、それは不可能のようです。
Div
だから私の質問は:要素ではなく要素に基づいてフィルタリングするにはどうすればよいBr
ですか? 機能を追加するボタンとテキストボックスをうまくフィルタリングできますが、私のレイアウトとサイトはDiv
そこにある私の要素に依存しています.