数据绑定Asp.Net下拉列表SelectedValue to Page属性

数据绑定Asp.Net下拉列表SelectedValue to Page属性,asp.net,vb.net,webforms,code-behind,Asp.net,Vb.net,Webforms,Code Behind,我的页面中有一个属性 Public Property Status as String 我通过调用手动设置状态列表 list.Items.Add(New ListItem("Open", "Open")) 然后我打电话 list.DataBind() 在我的页面上,我希望将所选值设置为该属性中的值,并且希望该属性中的值包含每个回发的列表的值 我尝试了SelectedValue='',但出现以下错误: 诸如Eval()、XPath()和Bind()之类的数据绑定方法只能是 在数据绑定控件的

我的页面中有一个属性

Public Property Status as String 
我通过调用手动设置状态列表

list.Items.Add(New ListItem("Open", "Open"))
然后我打电话

list.DataBind()
在我的页面上,我希望将所选值设置为该属性中的值,并且希望该属性中的值包含每个回发的列表的值

我尝试了
SelectedValue=''
,但出现以下错误:

诸如Eval()、XPath()和Bind()之类的数据绑定方法只能是 在数据绑定控件的上下文中使用

我有什么遗漏吗?最终目标是在回发之间将DropDownList的状态持久化到Page属性


谢谢。

服务器控件具有viewstate,只要不将控件的viewstate属性设置为false,就可以在回发之间自动保留控件的值


第二件事是在您的情况下不需要将其称为DataBind()函数。

您可以通过

status=DropDownList1.SelectedItem.Value.ToString();
为了在每次回发后获得所选值,您需要在dropdownlist
onselectedindexchanged=“dropdownlist 1\u SelectedIndexChanged”
中添加事件,在该事件中,您可以获得所选值,如下所示

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
        {
            status=DropDownList1.SelectedItem.Value.ToString();
        }
通过创建如下视图状态(在c#中),可以持久化status属性的值


这不起作用,因为如果另一个控件触发回发,我将丢失Status中的值。我正在尝试将该值持久化到页面属性。如果(Page.IsPostback){Status=dropdownlist1.selectedValue;}我希望它自动发生。我以为Bind会这么做?我不想呼叫列表。SelectedValue
public string status
        {

     get
            {
                if (ViewState["status"] != null)
                    return ViewState["status"].ToString();
                else
                    return null;
            }
            set
            {
                ViewState["status"] = value;
            }

        }