我有一个包含三个隐藏字段的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>
使用断点并检查值,我已确认在客户端设置了值。
最后,对于连接到LinkButton 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函数的值返回到服务器端?
答案 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];
所以请尝试以这种方式使用