HTML 选择值不会更改
本文关键字:选择 HTML | 更新日期: 2023-09-27 18:35:39
我是 ASP.NET 和C#的新手,我正在尝试创建一个论坛。我的.aspx文件上有一个 HTML 选择和一个 HTML 按钮,在.aspx.cs文件中,我想在按下按钮时获得该 HTML 选择值,但它总是给我"默认"值,而不是实际选择的值。
这是我.aspx文件中:
<select id="sortBySelect" runat="server">
<option value="default">Default</option>
<option value="username">Username</option>
<option value="date">Data</option>
</select>
<button id="sortByButton" runat="server" onserverclick="sortBy">Sort</button>
在我的.aspx.cs文件中,我有这个:
public void sortBy(object sender, EventArgs e)
{
System.Diagnostics.Debug.WriteLine(sortBySelect.Value);
}
我也不能使用 asp 下拉列表/asp 按钮,因为它说它必须保留在带有"runat="server"的表单标签中,但我的 .aspx 文件中已经有一个表单标签,如果我添加另一个它说我不能有 2 个带有"runat="server"的表单标签。
如何获取该 HTML 选择的实际选定值?
在 ASP.Net Web 表单中,您需要表单标记才能runat="server"
。此外,您不应操作表单标记。
ASP.Net 控件使用 ViewState 来维护回发之间的状态信息。因此,您希望使用服务器控件,如 DropDownList(除非您知道不需要 ViewState)。
<form id="form1" runat="server">
<asp:DropDownList ID="SortByDropDownList"
runat="server">
<asp:ListItem Value="default">Default</asp:ListItem>
<asp:ListItem Value="username">Username</asp:ListItem>
<asp:ListItem Value="date">Data</asp:ListItem>
</asp:DropDownList>
<asp:Button runat="server" ID="SortByButton"
Text="Sort"
OnClick="SortByButton_Click" />
</form>
protected void SortByButton_Click(object sender, EventArgs e)
{
string value = SortByDropDownList.SelectedValue;
}
您没有获得值,因为"选择"不是表单的一部分,因此不会在提交时回发。您在此处用于排序的按钮应该是包含"选择"的目标表单。 考虑在您的页面上只有一个表单。
编辑:对你关于表格数量的评论。如果添加其他表单,则需要支持逻辑来支持它,因为默认情况下 ASP.Net 仅维护标有 runat="server" 的表单。这包括在回发之间保留数据、不具有 ASP.Net 服务器事件等。