2015-05-26 36 views
4

我有一個C#,ASP.NET網站,我有一個JavaScript腳本里面,我希望發送一個變種從它裏面到我的代碼功能, 我試圖用一個隱藏字段來做到這一點,這裏是它的外觀:試圖發送值使用隱藏字段從Javascript到C#

<asp:HiddenField ID="chatMessage" runat="server" /> 
<!--Script references. --> 
<!--Reference the jQuery library. --> 
<script src="Scripts/jquery-1.6.4.min.js" "></script> 
<!--Reference the SignalR library. --> 
<script src="/Scripts/jquery.signalR-2.0.0.js"></script> 
<!--Reference the autogenerated SignalR hub script. --> 
<script src="/signalr/hubs"></script> 
<!--Add script to update the page and send messages.--> 
<script type="text/javascript"> 
    $(function() { 
     // Declare a proxy to reference the hub. 
     var chat = $.connection.chatHub; 
     // Create a function that the hub can call to broadcast messages. 
     chat.client.broadcastMessage = function (name, message) { 
      // Html encode display name and message. 
      var encodedName = $('<div />').text(name).html(); 
      var encodedMsg = $('<div /> ').text(message).html(); 
      var tremp_id = $('<div /> ').text("<%=Request.QueryString["trempid"]%>").html(); 

      var chatMessage = document.getElementById('chatMessage'); 
      chatMessage.value = 'value from javascript'; 

      // Add the message to the page. 
      $('#discussion').append('<li class="<%=returnLiClass(chatMessage.Value)%><strong>' + encodedName 
       + '</strong>:&nbsp;&nbsp;' + encodedMsg + "Tremp:" + tremp_id + '</li>'); 
     }; 
     // Get the user name and store it to prepend to messages. 
     $('#displayname').val('<%=returnName()%>'); 
     // Set initial focus to message input box. 
     $('#message').focus(); 
     // Start the connection. 
     $.connection.hub.start().done(function() { 
      $('#sendmessage').click(function() { 
       // Call the Send method on the hub. 
       chat.server.send($('#displayname').val(), $('#message').val()); 
       // Clear text box and reset focus for next comment. 
       $('#message').val('').focus(); 
      }); 
     }); 
    }); 
</script> 

正如你可以看到我發送chatMessage.ValuereturnLiClass()功能。 當我調試我看到它得到一個空字符串(「」)。

我在做什麼錯了?謝謝!

+1

您可以發佈您的HTML和服務器端的樞紐? –

+0

var chatMessage = document.getElementById('chatMessage')不會返回任何內容,因爲服務器控件的ID不是他的ID。而不是chatMessage你需要<%= chatMessage.ClientID%> – loli

回答

0

如果您希望在JavaScript中引用它們,那麼在使用任何服務器控件時,您必須使用ClientID。

看起來應該像下面這樣:

var chatMessage = document.getElementById('<%= chatMessage.ClientID %>'); 
+0

我試過了,仍然,當我檢查'chatMessage.Value'我看到空字符串.. – IdanFitousi

0

嘗試使用jQuery

$('#chatMessage').val(chatMessage.value) 
+2

通常的答案應該有比這更多的解釋。爲什麼此代碼有效? – durron597

+0

是的,你的權利我沒有完成我的代碼對不起,我的英語不是很好的xplain,所以讓我改變我的答案... $('#chatMessage')。val(來自javascript的值)') 。 – user3182546

+0

或者你可以做'$('#chatMessage')。text(chatMessage.value)' – user3182546

相關問題