7

これは私がこのサイトで尋ねる最初の質問です。そのため、前もって作ったごまかしをお詫びしますが、できる限りこの質問をするように努めます。

私の問題を説明するのは少し難しいと思いますが、要約すると次のようになります。

Web サービスから XML ファイルを取得し、XSLT を使用してそれを HTML の大きな文字列に変換することによって生成された HTML の大きな文字列があります。次に、それを Control コレクションに解析し、いくつかのイベント ハンドラーを追加して、それを HTMLPlaceholder に追加すると、すべてが正常に機能します。

ただし、この HTML 文字列には私の Web サイト全体がほとんど含まれており、すべてのマークアップを一度に処理できないハンド ターミナルで実行されているため、送信するマークアップをフィルター処理していますが、これには問題があります。

DivDiv保持したい要素を失うことなく要素を除外することはできません。これは、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'));&#xA;          "></div>

そして次:

<br><label class="label">FRAGT</label><br>

そして次:

<br><label class="label">SPEDITØR</label><br>

ご覧のとおり、私の LiteralControls はbr要素に基づいていますが、問題は、要素に基づいてフィルター処理したいことですDiv。ただし、汚い、率直に言って望ましくないハッキングに頼らない限り、それは不可能のようです。

Divだから私の質問は:要素ではなく要素に基づいてフィルタリングするにはどうすればよいBrですか? 機能を追加するボタンとテキストボックスをうまくフィルタリングできますが、私のレイアウトとサイトはDivそこにある私の要素に依存しています.

4

1 に答える 1

1

BR次のように要素を 閉じてみてください。<br /> パーサーは、BR閉じタグのない要素によって混乱していると思います。

于 2012-12-19T16:15:14.803 に答える