Using the approach shown in the here question, I can get the selected item values from my CheckBoxList :
var selectedCheckBoxItems = from key in Request.Form.AllKeys where key.Contains(cbl.ID) select Request.Form.Get(key);
Then I can iterate over the results:
foreach (var item in selectedCheckBoxItems) { }
The problem is that item is just the published value, which for the checkbox is just the string "on".

I need to determine which element is "on", either by index or by some other method.
Question: How to determine which items in a CheckBoxList are selected using Request.Form ?
Here is my CheckBoxList definition:
<asp:CheckBoxList runat="server" ID="cblAnimalType" SelectionMode="Multiple" DataTextField="OptionText" DataValueField="OptionId" AutoPostBack="True"/>
Items are added to the list from the code behind:
DataTable dt = GetData(SqlGetListOptions, paramList); cbl.DataSource = dt; cbl.DataBind();
Another important one is ViewStateMode="Disabled" , so I have to use Request.Form to get the selected items.
In response to the comment, here is what the HTML looks like for CheckBoxList:

@Leopard noted that he sees values displayed in HTML that are not found in my situation. AdamE's answer to this question explains why. I have the following line in web.config:
<pages validateRequest="false" controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID">
which explains why I see "on" instead of the actual value of the selected elements. I can’t just pull out the compatibility with web.config without checking that it won’t break something else, but it seems that if this option is safe for deletion, the values of the checkbox list will be accessible from the code.