これは私がこのサイトで尋ねる最初の質問であるため、事前に作成したmuckupについて謝ります。可能な限り最高です。コントロールを作成する.Parsecontrol(HTMLString)filter Br要素の代わりにdiv要素によるリテラルコントロール
私が説明するのは少し難しい私の問題を見つけることだが、それはこれに沸く:
私は、WebサービスからXMLファイルを取得しにXSLTを使用して生成されたHTMLの大きな文字列を持っていますそれをHTMLの大きな文字列に変換します。私はそれをControlコレクションに解析し、いくつかのイベントハンドラを追加してHTMLPlaceholderに追加します。そしてすべてがうまくいきます。
しかし、このHTML文字列は私のウェブサイト全体を網羅しており、一度にすべてのマークアップを処理できないハンドターミナルで実行されているため、送信するマークアップをフィルタリングしますが、
Div
要素は、私が保持したいDiv
要素を失うことなく除外することはできません。これは、Parsecontrolが私のDiv
要素を半分にチョップし、それをLiteralcontrolsに変換し、それをbr
要素でソートするためです。私のコードを表示
は少し難しいですが、ここでは何が起こるかの例です:
//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
要素に基づいてフィルタリングしたいということです。しかし、それは汚い、率直に嫌なハッキングに頼らざるを得ないと思われる。
私の質問は、Br
要素の代わりにDiv
要素に基づいてどのようにフィルタリングしますか?機能を追加するボタンやテキストボックスをフィルタリングすることはできますが、レイアウトとサイトは私のDiv
要素に依存しています。
'ctrl.Controls.RemoveAt(i);を呼び出すと、'
私が欲しいdiv要素はLiteralControl要素にあることがありますが、問題はそれが子br要素を持ち、Literalcontrolが常に開始して終了する部分です。つまり、私のDiv要素のチョップされたバージョンしか得られません。すべての子ラベル要素は、それらのinf要素の前にbr要素があるため分離されています(上記参照) –