我有一个包含文本和值的下拉列表。当我尝试从 Page.Request.Form["ID1"] 检索数据时,我得到的是值而不是文本..有没有办法我可以同时获得两者这些 。
<select id="ID1">
<option Value="1">
Test
</option>
<Option Value="2">
Test2
</Option>
</select>
谢谢
我有一个包含文本和值的下拉列表。当我尝试从 Page.Request.Form["ID1"] 检索数据时,我得到的是值而不是文本..有没有办法我可以同时获得两者这些 。
<select id="ID1">
<option Value="1">
Test
</option>
<Option Value="2">
Test2
</Option>
</select>
谢谢
有一种方法可以做到这一点。
在 web 控件的初始化期间,在后面的代码中,将下拉列表存储在成员变量中,以便您保留对它的引用,并在初始化期间填充它的 Items 集合。
然后在初始化期间也使用 Request.Form(ddl.UniqueID) 获取回发的值(键)。
使用 键在下拉列表中查找项目,例如。
dim selectedValue as string = Request.Form(ddl.UniqueID)
dim theItem as ListItem = Nothing
If Not IsNothing(ddl.Items.FindByValue(selectedValue)) Then
theItem = ddl.Items.FindByValue(selectedValue)
dim strText as string = theItem.Text
End If
只有值回发到表单上。
使用该值,您可以在列表中找到需要保存/保留的文本,或者在视图状态中,或者将其保留在下拉列表框中。如果您不能使用它们,那么另一种解决方案是将您希望获得的所有数据保留在该值上,然后再拆分它们。
根据标准更改我的答案
我有点想把它写下来,所以如果有语法错误,我深表歉意——希望你能得到大致的想法
由于您可以控制客户端..您可以像这样传递表单文本/值
<select name="mySelect">
<option value="myName1:myValue1">myName1</option>
<option value="myName2:myValue2">myName2</option>
<option value="myName3:myValue3">myName3</option>
</select>
然后......服务器端你可以做这样的事情......
var mySelect = Page.Request.Form["mySelect"].ToString();
var myText = mySelect.Split(":".ToCharArray()).First();
var myValue = mySelect.Split(":".ToCharArray()).Last();