0

次のような JavaScript を使用して設定された ASP.Net ドロップダウン リストがあります。

ドロップダウンリスト:

<asp:DropDownList ID="Ddl" runat="server" AutoPostBack="true"
       EnableViewState="true"></asp:DropDownList>

ドロップダウン リストに「テキスト」を入力する JavaScript コードは次のとおりです。

var select = document.getElementById('<%= Ddl.ClientID %>');
var option = document.createElement("option");
option.value = '1';
option.innerHTML = "Text";
select.appendChild(option);

クライアント側で問題なく満たされます。サーバー側で実行するボタンを追加しました。サーバー側で、選択した ddl 値を取得しようとすると、例外が発生します (オブジェクト参照がオブジェクトのインスタンスに設定されていません)。

フォームがサーバーに送信されると、ASP.Net ddl コントロールがコンテンツを失うことを理解していますか? この問題にどのように対処しますか? 非表示フィールドに値を入れて使用しようとしRequest.Form["HiddenField"].toString();ましたが、同じエラーが発生します。何か助けはありますか?

4

1 に答える 1

2

あなたが述べているように、クライアント側でドロップダウンを設定して、サーバー側にListItemオブジェクトがそこにあることを知らせることはできません。これは、それらがサーバーにポストバックされないためです。選択された値のみがポストされます。

を使用しなくても運が良いかもしれませんDropDownList。ドロップダウンを HTMLselectタグとして作成します。必ずname属性を設定してください (そうしないと、ポストバックで取得されません)。次に、Request.Formコレクションを使用して、選択した HTML の値にアクセスしますselect

DropDownListあなたが私たちに言ったことを考えると、私が考えることができるa を使用する唯一の理由は、サーバー側のデータから、ある時点でサーバー側でそれをバインドする予定がある場合、またはその外観を変更したい場合です。サーバー側の計算に基づいていますが、Ajax 呼び出しを設定したくありません。これらのことのどちらもしたくない場合は、 a のselect方が適している可能性があります。

于 2013-01-16T13:28:59.447 に答える