私の ASP.NET サイトには、サーバーによっていくつかの要素が入力された 2 つの選択リストがあります。
// .aspx
<asp:dropdownlist id="abc" runat="server"></asp:dropdownlist>
<asp:dropdownlist id="def" runat="server"></asp:dropdownlist>
// .aspx.cs
abc.Items.Add(new ListItem("element1", "value1"));
def.Items.Add(new ListItem("element1", "value1"));
理由が複雑すぎて説明できないため、JavaScript を使用して選択リストのオプションを変更し、いくつかの値を追加する必要があります。
// In the <head> of the .aspx page
var abcList = document.getElementById("abc");
var defList = document.getElementById("def");
var newAbcElement = new Option("element2", "value2", false, false);
var newDefElement = new Option("element2", "value2", false, false);
abcList.options[abcList.length] = newAbcElement;
defList.options[defList.length] = newDefElement;
もちろん、フォームをサーバーに送り返すとすぐに、これは検証を台無しにします (送信するか、他のフォーム要素からの PostBack としてAutoPostBack="true"
)。
ポストバックまたはコールバック引数が無効です。イベントの検証は、設定で使用するか、ページで <%@ Page EnableEventValidation="true" %> を使用して有効にします。セキュリティ上の理由から、この機能は、ポストバック イベントまたはコールバック イベントへの引数が、それらを最初にレンダリングしたサーバー コントロールから発信されていることを確認します。データが有効で期待される場合は、ClientScriptManager.RegisterForEventValidation メソッドを使用して、検証のためにポストバックまたはコールバック データを登録します。
現在、ページのデザイン全体を完全にオーバーホールするためのリソースと予算がありません。すべてを書き直す必要がない、ドロップダウンリストを変更する最も速くて簡単な方法は何ですか?
フォームを送信するときに、JavaScript を介して追加された値が CodeBehind ファイルによって認識されるようにするには?