我有一个名为“ FileBrowser”的用户控件。该控件包含一个名为“ FileList”的列表框。后面的代码公开了一个属性:
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开发非常陌生。我想也许发生了一些我不熟悉的奇怪的生命周期事件。
最佳答案
选择列表框值时,它会在客户端更改。但是,您正在使用服务器端代码来获取值'<% Response.Write(fileBrowser.SelectedPath);%>'
,该值仍为“空”(初始值),直到该页面回发为止。
在用户控件中,如果将ListBox设置为AutoPostBack="True"
,则将获得所需的结果。
关于c# - ASP.NET自定义控件属性访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18518520/