我有一个依赖于母版页的 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 值,但这不是我在这里寻找的答案。
感谢您的任何意见。
慕无忌1623718
回首忆惘然
相关分类