Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# HTML选择值不会更改_C#_Asp.net - Fatal编程技术网

C# HTML选择值不会更改

C# HTML选择值不会更改,c#,asp.net,C#,Asp.net,我是ASP.NET和C#的新手,我正在尝试创建一个论坛。 我在.aspx文件上有一个HTML选择和一个HTML按钮,在.aspx.cs文件中,我想在按下按钮时获得HTML选择值,但它总是给我“默认”值,而不是实际选择的值 这在我的.aspx文件中: <select id="sortBySelect" runat="server"> <option value="default">Default</option> <option value

我是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>
我也不能使用asp dropdownlist/asp按钮,因为它说它必须保留在带有“runat=”server“”的表单标记中,但我的.aspx文件上已经有一个表单标记,如果我添加另一个,它会说我不能有两个带有“runat=”server“”的表单标记


如何获取HTML select的实际选定值?

由于“select”不是表单的一部分,因此不会在提交时发回,因此不会返回值。您在此处用于排序的按钮应该是包含“选择”的目标表单。考虑在页面上只有一个表单。

编辑:编辑您对表单数量的评论。
如果添加其他表单,则需要支持逻辑来支持它,因为默认情况下ASP.Net只维护那些标记为runat=“server”的表单。这包括在回发之间持久化数据、没有ASP.Net服务器事件等。

在ASP.Net Web表单中,表单标记必须是
runat=“server”
。此外,不应操纵表单标记

ASP.Net控件使用ViewState来维护回发之间的状态信息。因此,您希望使用服务器控件,例如DropDownList(除非您知道不需要ViewState)


违约
用户名
资料
受保护的无效排序按钮单击(对象发送方,事件参数e)
{
字符串值=SortByDropDownList.SelectedValue;
}

使用Hi-Alexandru。如果您不熟悉asp.net和c#,特别是如果您有任何其他web编程经验,我强烈建议您使用asp.net mvc框架,而不是您正在使用的webforms框架。Mvc有更简单的概念,对web格式来说更自然,而且通常提供更高质量的建议。Webforms有时可能很有用,但我永远不会将其用于类似的事情,也不会向初学者推荐它。@Igor Semin我曾试图将我的HTML select放入表单标记中,但使用method=“get”我的函数“sortBy”不会被调用,并且使用/不使用method=“post”它更改了我的应用程序使用的URL,因此页面呈现失败。@George Mauer,我使用的是PHP和Symfony2/Zend框架,它们都是MVC,但这是一个大学项目,我们必须使用Web表单。@AlexandruAndrei你不应该在ASP.Net Web表单中操纵表单标记。我也想过在我的页面上只有一个表单,但我应该在每个页面上都有一个登录表单,就像在普通论坛上一样。
public void sortBy(object sender, EventArgs e)
{
    System.Diagnostics.Debug.WriteLine(sortBySelect.Value);
}
<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;
}