我有一个名为'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开发一般都很陌生。我想也许有一些奇怪的生命周期事件发生,我不熟悉。
答案 0 :(得分:1)
当您选择列表框值时,它会在客户端更改。但是您使用服务器端代码来获取仍为“空”(初始值)的值'<% Response.Write(fileBrowser.SelectedPath);%>'
,直到页面被回发。
在用户控件中,如果为ListBox设置AutoPostBack="True"
,您将获得所需的结果。