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 回答