1

「FileBrowser」というユーザー コントロールがあります。コントロールには、「FileList」という名前の ListBox が含まれています。コード ビハインドはプロパティを公開します。

public string SelectedPath
    { get { return string.IsNullOrEmpty(FileList.SelectedValue) ? "empty" : FileList.SelectedValue; } }

これを使用してコントロールを実装するページからこれにアクセスしています:

<script>
    function testFunc() {
        var s = '<% Response.Write(fileBrowser.SelectedPath);%>';
        document.getElementById('<%= textBoxTest.ClientID %>').value = s;            
     }
</script>

非常に奇妙な行動が見られます。ボタンをクリックすると、ボタンが最後にクリックされたときのtextBoxTest値を取得します。SelectedValue

例:

FileList.SelectedPath = Test1

クリックすると「空」が返されます

もう一度クリックすると、「Test1」が返されます

リストボックス test2 で新しい値を選択し、もう一度クリックすると、"Test1" が返されます

もう一度クリックすると、「test2」が返されます

私は ASP.NET と Web 開発全般に非常に慣れていません。私がよく知らない奇妙なライフサイクルイベントが発生している可能性があります。

4

1 に答える 1

1

リストボックスの値を選択すると、クライアント側で変更されます。ただし、サーバー側のコードを使用して値を取得しています。'<% Response.Write(fileBrowser.SelectedPath);%>'これは、ページがポストバックされるまで、まだ「空」(初期値) です。

ユーザー コントロールAutoPostBack="True"で ListBox を設定すると、目的の結果が得られます。

于 2013-08-29T20:21:40.293 に答える