我最近在 ASP.NET DropDownList 中发现了一个奇怪的行为,希望有人能解释一下。
基本上我遇到的问题是在回发之前进行数据绑定,然后将其设置为数据SelectedValue
项列表中不存在的值,调用根本没有效果。但是,在回发时,相同的调用将失败并显示ArgumentOutOfRangeException()
'cmbCountry' 有一个无效的 SelectedValue,因为它不存在于项目列表中。参数名称:值
我正在使用以下代码。
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
cmbCountry.DataSource = GetCountries();
cmbCountry.DataBind();
cmbCountry.SelectedValue = ""; //No effect
}
else
{
cmbCountry.SelectedValue = ""; //ArgumentOutOfRangeException is thrown
}
}
protected List<Country> GetCountries()
{
List<Country> result = new List<Country>();
result.Add(new Country() { ID = Guid.NewGuid(), Description = "Test" });
result.Add(new Country() { ID = Guid.NewGuid(), Description = "Test1" });
result.Add(new Country() { ID = Guid.NewGuid(), Description = "Test2" });
result.Add(new Country() { ID = Guid.NewGuid(), Description = "Test3" });
return result;
}
public class Country
{
public Country() { }
public Guid ID { get; set; }
public string Description { get; set; }
}
有人可以为我澄清这种行为的原因并建议是否有任何解决方法?