我已经检查了您的代码,我认为一个快速简便的解决方法是检查请求是否来自清除按钮。如果您按下清除按钮,基本上我不会调用 ReloadDropDownSelection()。
public partial class CascadingUC : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
ModelYears.Attributes.Add("onchange", "OnModelYearChange()");
Makes.Attributes.Add("onchange", "OnMakeChange()");
Models.Attributes.Add("onchange", "OnModelChange()");
LoadMakes();
LoadModels();
}
else
{
if ((Request.Form["btnClear"]==null)||(Request.Form["btnClear"] != "Clear"))
ReloadDropDownSelection();
}
}
正如我在评论中告诉你的那样,我认为这里的问题是视图状态。您在服务器端加载组合 (PopulateDropDownList),然后在客户端更改项目。
我花了几年时间与这些东西(asp.net、viewstate、数千个事件)作斗争,当 ASP.NET MVC 出现时,我看到了曙光;-) 我真的非常讨厌 ASP.NET 网络表单。我想这几乎是个笑话。