为了账号安全,请及时绑定邮箱和手机立即绑定

如何在不使用 UpdatePanel 的情况下从动态填充的下拉列表中获取 POSTed 值?

如何在不使用 UpdatePanel 的情况下从动态填充的下拉列表中获取 POSTed 值?

C#
慕娘9325324 2022-06-12 16:17:30
我有一个依赖于母版页的 Web 表单,其中包含一个简单的表单,如下所示:<asp:TextBox runat="server" ID="txtValue"></asp:TextBox>    <asp:DropDownList runat="server" ID="ddlProduct" /><asp:Button runat="server" ID="btnConfirm" Text="Confirm" OnClick="btnConfirm_OnClick" />在 Page_Load 我用值动态填充 DropDownList:foreach(var product in products){    ListItem item = new ListItem(product.Nazev, product.ProductId.ToString());    ddlProduct.Items.Add(item);}现在..通常如果 DropDownList 是静态填充的,我会使用这个,以从中获取我选择的值:protected void btnConfirm_OnClick(object sender, EventArgs e){    string selectedProduct = ddlProduct.SelectedValue;}但在这种情况下这是不行的。因此,我尝试使用其中一种方法(实际上实际上是相同的)直接从 POSTed 参数中获取所选值:protected void btnConfirm_OnClick(object sender, EventArgs e){    string selectedProduct = Request.Form.Get(ddlProdukt.ClientID);    string selectedProduct2 = Request.Params[ddlProdukt.ClientID];}但它不起作用。如果我对其进行调试,则 POSTed Form (Request.Params) 中 DropDownList 的实际“id/name”为:“ctl00 $ MainContent $ ddlProdukt”而我的方法给我的 ClientId 是:“ctl00_MainContent_ddlProdukt”我想不通,为什么它在我的DDL控件的ID中将'_'替换为'$'。这似乎是一件微不足道的事情。应该有更好的方法来找出正确的 ID,而不是替换字符,对吧?是否有其他方式我应该“查看/询问”所选值?*请注意,我不是在寻找带有 UpdatePanel 的解决方案。我知道,使用 UpdatePanel 会导致在回发之后成功选择 DDL 值,但这不是我在这里寻找的答案。感谢您的任何意见。
查看完整描述

2 回答

?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

如果您仍然需要使用,Request.Form.Get或者Request.Params您应该调用它,ddlProdukt.UniqueID因为它的分隔符是“$”而不是“_”.ClientID



查看完整回答
反对 回复 2022-06-12
?
回首忆惘然

TA贡献1847条经验 获得超11个赞

根据要求举个例子。此代码和<asp:DropDownList ID="ddlProduct" runat="server"></asp:DropDownList>是在 aspx 页面上,而不是 Master。


protected void Page_Load(object sender, EventArgs e)

{

    //bind data not here

    if (IsPostBack == false)

    {

        //but inside the ispostback check

        ddlProduct.Items.Add(new ListItem("Item 1", "1"));

        ddlProduct.Items.Add(new ListItem("Item 2", "2"));

        ddlProduct.Items.Add(new ListItem("Item 3", "3"));

        ddlProduct.DataBind();

    }

}


protected void Button1_Click(object sender, EventArgs e)

{

    Label1.Text = ddlProduct.SelectedValue;

}


查看完整回答
反对 回复 2022-06-12
  • 2 回答
  • 0 关注
  • 103 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信