获取隐藏字段的值

时间:2012-07-26 17:35:52

标签: asp.net hidden-field

我有一个包含三个隐藏字段的ASP.NET页面。 (如果我能让它发挥作用,就会有人做。只是表明我已经尝试了几件事。)

<input type="hidden" id="hiddenSkillId1" runat="server" />
<input type="hidden" id="hiddenSkillId2" />
<asp:HiddenField ID="hiddenSkillId3" runat="server"/>    

我还有一个由AJAXControlToolKit.AutoCompleteExtender.OnClientItemSelected事件调用的JavaScript函数:

<script type="text/javascript">
function SkillPartialMatchSelected(source, eventArgs ) {
    document.getElementById("ctl00_Content_hiddenSkillId1").Value = eventArgs.get_value();
    document.getElementById("hiddenSkillId2").Value = eventArgs.get_value();
    document.getElementById("ctl00_Content_hiddenSkillId3").Value = eventArgs.get_value();
}
</script>

使用断点并检查值,我已确认在客户端设置了值。

最后,对于连接到LinkBut​​ton OnClick事件的页面,我有C#代码。

protected void AddSkillToProspect(object sender, EventArgs e)
{
   string selectedKey1 = Request.Form[hiddenSkillId1.ClientID];
   string selectedKey2 = Request.Form["hiddenSkillId2"];
   string selectedKey3 = Request.Form[hiddenSkillId3.ClientID];
   string selectedItem = SkillNameBox.Text.Trim();   
   ...
}

所有三个selectedKey值都为null,但ASP.NET Text Edit中的selectedItem值具有值。

根据我的阅读,其中一个应该有效。我错过了什么吗?我该怎么做才能将客户端的JavaScript函数的值返回到服务器端?

2 个答案:

答案 0 :(得分:6)

问题与JavaScript中的区分大小写有关。虽然您已为这些字段设置了.Value,但这与.value不同。更改你的javascript以设置.value,你应该全部设置。

<script type="text/javascript">
function SkillPartialMatchSelected(source, eventArgs )     
{
    document.getElementById("ctl00_Content_hiddenSkillId1").value = eventArgs.get_value();
    document.getElementById("hiddenSkillId2").value = eventArgs.get_value();
    document.getElementById("ctl00_Content_hiddenSkillId3").value = eventArgs.get_value(); 
} 
</script> 

答案 1 :(得分:2)

您的hiddens控件上有runat=server表示它们是服务器控件,您可以通过后面代码中的ID访问它们

这样差异将hiddenSkillId1是一个htmlserver控件,hiddenSkillId2正常的html控件,而这个hiddenSkillId3是一个asp.net控件

string selectedKey1 = hiddenSkillId1.Value;
string selectedKey3 = hiddenSkillId3.Text;
string selectedKey2 = Request.Form[hiddenSkillId2];

所以请尝试以这种方式使用