gpt4 book ai didi

asp.net - CheckBoxList 的 DataValueField 值存储在哪里?

转载 作者:数据小太阳 更新时间:2023-10-29 05:40:17 30 4
gpt4 key购买 nike

我在页面上有这个 CheckBoxList:

<asp:checkboxlist runat="server" id="Locations" datasourceid="LocationsDatasource"
datatextfield="CountryName" datavaluefield="CountryCode" />

我想使用 Javascript 遍历客户端上的复选框元素并获取每个选中复选框的值,但这些值在客户端似乎不可用。 HTML 输出如下所示:

<table id="ctl00_Content_Locations" class="SearchFilterCheckboxlist" cellspacing="0" cellpadding="0" border="0" style="width:235px;border-collapse:collapse;">
<tr>
<td><input id="ctl00_Content_Locations_0" type="checkbox" name="ctl00$Content$Locations$0" /><label for="ctl00_Content_Locations_0">Democratic Republic of the Congo</label></td>
</tr><tr>
<td><input id="ctl00_Content_Locations_1" type="checkbox" name="ctl00$Content$Locations$1" /><label for="ctl00_Content_Locations_1">Central African Republic</label></td>
</tr><tr>
<td><input id="ctl00_Content_Locations_2" type="checkbox" name="ctl00$Content$Locations$2" /><label for="ctl00_Content_Locations_2">Congo</label></td>
</tr><tr>
<td><input id="ctl00_Content_Locations_3" type="checkbox" name="ctl00$Content$Locations$3" /><label for="ctl00_Content_Locations_3">Cameroon</label></td>
</tr><tr>
<td><input id="ctl00_Content_Locations_4" type="checkbox" name="ctl00$Content$Locations$4" /><label for="ctl00_Content_Locations_4">Gabon</label></td>
</tr><tr>
<td><input id="ctl00_Content_Locations_5" type="checkbox" name="ctl00$Content$Locations$5" /><label for="ctl00_Content_Locations_5">Equatorial Guinea</label></td>
</tr>

找不到值(“cd”、“cg”、“ga”等)。他们在哪?甚至可以在客户端访问它们,还是我需要使用中继器或其他东西自己构建此复选框列表?

最佳答案

我终于找到了我一直在寻找的答案!

asp.net CheckboxList 控件确实实际上将值属性呈现为 HTML - 它已经在生产站点为我工作了一年多了! (我们总是为我们的所有网站关闭 EnableViewState,它仍然有效,没有任何调整或黑客攻击)

然而,有一天它突然停止工作,我们的 CheckboxList 复选框不再在 HTML 中呈现它们的 value 属性!你说什么?我们也是!弄清楚这一点花了一段时间,但由于它之前一直有效,我们知道其中一定有原因。原因是我们的 web.config 被意外更改了!

<pages controlRenderingCompatibilityVersion="3.5">

我们从页面配置部分删除了这个属性,这就成功了!

为什么会这样?我们反射(reflect)了 CheckboxList 控件的代码,并在 RenderItem 方法中找到了这一点:

if (this.RenderingCompatibility >= VersionUtil.Framework40)
{
this._controlToRepeat.InputAttributes.Add("value", item.Value);
}

亲爱的开发 sibling 们不要绝望!我在 Stackexchange 上搜索的所有答案和网络的其余部分都提供了错误的信息!从 .Net 4.0 开始,asp.net 呈现 CheckboxList 的复选框的值属性:

<input type="checkbox" value="myvalue1" id="someid" />

也许实际上没有用,Microsoft 允许您将“controlRenderingCompatibilityVersion”添加到您的 web.config 以通过设置为低于 4 的版本来关闭它,这对我们的目的来说是完全不必要的,实际上是有害的,因为javascript代码依赖于value属性...

我们让所有复选框的 chk.val() 等于“on”,这是最初提醒我们这个问题的原因(使用 jquery.val() 获取复选框的值。Turns out "on"是选中的复选框的值...每天学习一些东西)。

关于asp.net - CheckBoxList 的 DataValueField 值存储在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/180245/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com