0

リピーターコントロールの子コントロールのnameプロパティが、異なるIISサーバーに展開されたときにASP.NETアプリケーションで異なる方法で生成される理由を誰かが説明できますか?

一部のIISサーバーの名前は、次の形式を使用して生成されます。

String.Format("{0}:_ctl{1:00}:{2}", RepeaterControlID, itemIndex, ChildControlID);

例えば

<input name="Mntc_Software_List:_ctl1:id" id="Mntc_Software_List__ctl1_id" type="hidden" value="1772" />

他のIISサーバーでは、形式は次のとおりです。

String.Format("{0}$ctl{1}${2}", RepeaterControlID, itemIndex, ChildControlID);

例えば

<input name="Mntc_Software_List$ctl01$id" type="hidden" id="Mntc_Software_List_ctl01_id" value="1772" />
4

2 に答える 2

1

2つの名前の違いは、一方が「$」セパレーターを使用し、もう一方が「:」セパレーターを使用することです。ControlクラスでLutzリフレクターを使用すると、これがプロパティ'EnableLegacyRendering'によって制御されていることがわかります。これは、XHTML 1.0準拠のコントロールレンダリング(MSDN)と関係があります。

詳細については、GoogleforEnableLegacyRenderingをご覧ください。

于 2010-09-10T06:42:35.287 に答える
0

実は、1つは名前、もう1つはIDだと思います。どちらがどちらか忘れてしまいましたが、名前とIDのルールが違います。

それらが両方とも名前であることが確実な場合は、両方のサーバーで同じバージョンの.NETを使用していると確信していますか?古いバージョンでは、名前の生成方法が異なる場合があります。

于 2010-09-10T06:07:13.063 に答える