我敢肯定这很简单(和正在出牙的女儿一起熬夜!)我的下拉列表总是返回 0:
<p>
<asp:DropDownList ID="ddlSelectVenue" AppendDataBoundItems="true" CssClass="small-dropdownlist" DataTextField="SiteName" DataValueField="SiteName" runat="server">
<asp:ListItem Text="-- select --" Value="0"></asp:ListItem>
</asp:DropDownList>
</p>
这是填充它的代码:
for (int i = 0; i < dArray.Length; i++)
{
ddlSelectVenue.Items.Add(new ListItem(dArray[i]["SiteName"].ToString(),dArray[i]["SiteName"].ToString()));
}
它确实包含值,这是页面源代码的片段:
<select name="ctl00$ddlSelectVenue" id="ctl00_ddlSelectVenue" class="small-dropdownlist">
<option value="0">-- select --</option>
<option value="Admiral Duncan - London">Admiral Duncan - London</option>
<option value="Anchor - Bristol">Anchor - Bristol</option>
<option value="Assembly - Preston">Assembly - Preston</option>
</select>
这是 Go 按钮 HTML:
<asp:ImageButton ID="imbGo" ImageUrl="~/img/GoButton.png" OnClick="imbGo_Click" runat="server" />
这是 imbGo_Click (很好的一部分):
protected void imbGo_Click(object sender, EventArgs e)
{
switch(ddlSelectVenue.SelectedValue)
{
case "Admiral Duncan - London":
Response.Redirect("http://www.welovetolisten.co.uk?unitcode=5004&FROMWEBSITE=1");
break;
case "Anchor - Bristol":
Response.Redirect("http://www.welovetolisten.co.uk?unitcode=3010&FROMWEBSITE=1");
break;
// ...
}
}
它总是轰炸默认:正如我所说,原因可能很明显,但我只是没有看到它!
编辑
我已经用这个解决了它,但我会接受第一个说回发的人,因为这是问题所在,我不明白的是我使用了之前在 PageLoad 上填充的下拉列表,但没有这个之类的问题。
无论如何,我已经在使用 jQuery 更改的下拉列表中设置了一个 cookie:
$('.small-dropdownlist').change(function () {
var info = $('.small-dropdownlist option:selected').text();
$.cookie("FeedbackVenue", info);
});
然后在 Go 按钮上读取 cookie:
if(Request.Cookies["FeedbackVenue"] != null)
{
venue = Request.Cookies["FeedbackVenue"].Value;
}
switch(venue.Replace("%20"," "))
现在它起作用了。
感谢大家。