我有以下 Index.aspx 网络表单:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Index.aspx.cs" Inherits="ProblematicWebApplication.Index" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<asp:Label ID="dummyLabel" runat="server" Text="This is dummy label." />
<form id="form1" runat="server">
<div>
<asp:DropDownList ID="intDropDownList" runat="server"/>
<br />
<asp:Button Text="Submit" OnClick="OnSubmitClicked" runat="server"/>
<br />
Selected value: <asp:Label ID="selectedValueLabel" runat="server" />
</div>
</form>
</body>
</html>
Index.aspx.cs 文件后面的代码如下:
using System;
using System.Linq;
namespace ProblematicWebApplication
{
public partial class Index : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
this.intDropDownList.DataSource = Enumerable.Range(0, 11).ToArray();
this.intDropDownList.DataBind();
}
if (this.Request["remove-dummy"] != null)
this.Controls.Remove(this.dummyLabel);
}
protected void OnSubmitClicked(object sender, EventArgs e)
{
this.selectedValueLabel.Text = this.intDropDownList.SelectedValue;
}
}
}
当我在查询字符串中没有删除虚拟参数的情况下运行我的应用程序并从 intDropDownList 中选择一些值并单击提交按钮时,所选值相应地显示在 selectedValueLabel 中。
但是,如果我在查询字符串中使用 remove-dummy=1 参数运行我的应用程序,则会删除 dummyLabel。现在,当我从 intDropDownList 中选择一些值并单击提交按钮时,所选值未正确写入 selectedValueLabel 并且 intDropDownList 中的所有项目都被删除。
有人可以向我解释为什么会这样吗?为什么删除不相关的 dummyLabel 控件会影响 intDropDownList 控件?