【发布时间】:2016-05-06 15:25:44
【问题描述】:
你好,很抱歉,如果之前已经介绍过。
有一个错误让我烦恼了 2 天。
我有一个页面,当用户单击“BMW”徽标时将加载该页面 当页面加载下拉列表(称为“模型”)时,将从某个列表中获取值。
这里的问题是,每当我刷新页面 (F5) 时,即使我添加了“model.item.clear();”,它也会多次添加项目。方法。
所以底线是我只想添加项目一次,即使我重新加载了页面 (F5)。
NewTransaction.aspx 是具有下拉列表(“模型”)的页面, 这是另一个带有“BMW 标志”的页面的代码
<a href="NewTransaction.aspx?type=Car&company=BMW"><img class="logo" style="width:200px" src="images/BMW.png" /></a>
这是下拉列表NewTransaction.aspx的代码
<asp:DropDownList ID="model" runat="server" CssClass="inputs" OnSelectedIndexChanged="model_SelectedIndexChanged"></asp:DropDownList>
这里是我从具有“汽车”对象的列表中输入数据的部分。 请注意,此代码在 "Page_load" 方法中
switch (Server.UrlDecode(Request["company"]).ToString())
{
case "BMW":
model.Items.Clear();
foreach (Car n in OverLand.car)
{
if (n.made == "BMW")
{
model.Items.Add(n.model);
}
}
break;
请注意,它还有许多其他公司的“案例”。
谢谢。
编辑:我尝试了以下
switch (Server.UrlDecode(Request["company"]).ToString())
{
case "BMW":
if (!IsPostBack)
{
foreach (Car n in OverLand.car)
{
if (n.made == "BMW")
{
model.Items.Add(n.model);
}
}
}
break;
然后我在 google chrome 中运行了该网站,它可以正常工作,但是我停止了它并再次重新运行它,并且下拉列表添加了 5 次这样的项目。 我不知道这里发生了什么.-.
编辑 2 :所以我注意到第一次一切正常,当我尝试重新加载页面时,谷歌浏览器将这条消息发送给我:i.imgur.com/EVjLxGD.png .
但是,如果我关闭项目并重新打开它,它会多次添加数据(我认为它等于页面刷新的次数 + 我从模型列表中选择模型的次数)并防止我必须从 IIS 中停止该站点,但这当然只是一种查看其他一切是否正常工作的方法,我想不出一个停止它的想法,除了制作一种检查有多少模型的方法我进入我的宝马数据库并将该计数器放入一个变量中,并将另一个条件放入我已经用来将模型添加到列表中以在 dropdownlist.Items.Count >Counter 后停止添加的“if”条件中,但我我还在寻找更好的解决方案。
【问题讨论】:
-
是错字还是必须使用
model.Items.Clear();? -
将下拉列表的人口放入: if (!IsPostBack) { }
-
这只是一个错字,是的,我现在编辑了它。
-
我确实尝试添加“isPostBack”,但没有任何反应
-
@OmarElrayes,ViewState 正在保留组合框中的项目。我建议您将其数据绑定而不是手动添加项目。