4

3つの非表示フィールドがあるASP.NETページがあります。(私がそれを機能させることができれば、1つだけで十分です。私がいくつかのことを試したことを示すだけです。)

<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();   
   ...
}

3つのselectedKey値はすべてnullですが、ASP.NETテキスト編集のselectedItem値には値があります。

私が読んだことから、これらの1つが機能するはずです。私は何かが足りないのですか?クライアント側のJavaScript関数からサーバー側に値を戻すにはどうすればよいですか?

4

2 に答える 2

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> 
于 2012-07-26T20:05:29.283 に答える
3

非表示のコントロールがrunat=serverそれらにあるということは、それらがサーバーコントロールであり、コードビハインドのIDでそれらにアクセスできることを意味します

このように、違いはhiddenSkillId1htmlserverコントロール、hiddenSkillId2通常のhtmlコントロールであり、これhiddenSkillId3はasp.netコントロールです。

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

なので、このように使ってみてください

于 2012-07-26T17:44:03.987 に答える