2017-02-01 4 views
0

Я пытаюсь сделать много клиентское приложение. После того, как я сделал некоторые основные элементы управления и функции с Windows Forms, я решил добавить WebPage к моей стороне клиента.ASP.NET TextBox не будет добавлять текст из C#

Я создал новый проект и отредактировал его, и он работает нормально, страница подключается к серверу и получает сообщения, отправляемые с веб-страницы.

Проблема, которую я получаю, когда мне нужно размещать сообщения в текстовом поле на веб-странице. Я искал на некоторых страницах здесь, в Интернете, и я не могу найти хорошее решение для своей проблемы. Я alose использовал страницу.IsPostBack, но это не сработало, затем я добавил UpdatePanel, потому что страница обновлялась, когда я нажимал кнопки, но это тоже не сработало ... Теперь у меня нет идей.

Может ли кто-нибудь предложить, как мне это сделать? Мой код позади - это C#, и я не знаю, как разбирать эти данные на JavaScript или jQuery, поэтому у любого из вас есть некоторые подробности о том, как это будет также оценено.

Заранее спасибо.

А также отправлю все необходимое, если для этого вопроса важно.

EDIT (Добавлен код):

public void btnSend_Click(object sender, EventArgs e) 
     { 
      if (tbSendMessage.Text.Length > 0) 
      { 
       string message = tbSendMessage.Text; 
       byte[] outStream = Encoding.ASCII.GetBytes(message + "$"); 
       serverStream.Write(outStream, 0, outStream.Length); 
       serverStream.Flush(); 
       tbSendMessage.Text = string.Empty; 
      } 
     } 

private void getMessage() 
     { 
      while (true) 
      { 
       try 
       { 
        serverStream = clientSocket.GetStream(); 
        int buffSize = 0; 
        byte[] inStream = new byte[70000]; 
        buffSize = clientSocket.ReceiveBufferSize; 
        serverStream.Read(inStream, 0, buffSize); 
        string returndata = Encoding.ASCII.GetString(inStream); 
        //tbReceivedMessages.Text += returndata + "\n"; 
        ShowMessage(returndata); 
       } 
       catch (Exception ex) 
       { 
        ShowAlert("Connection lost.\n" + ex.Message); 
        //ShowMessage("Conexiunea cu serverul s-a pierdut.\n"); 
        serverStream.Close(); 
        return; 
       } 
      } 
     } 

private void ShowMessage(string message) 
     { 
      sb.AppendLine(message); 
      tbReceivedMessages.Text += sb;   
     } 

<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server"> 
    <h2><%: Title %></h2> 
    <p> 
     <asp:UpdatePanel ID="UpdatePanelConnect" runat="server"> 
      <ContentTemplate> 
       <asp:Label ID="lblUsername" runat="server" Text="Enter username:"></asp:Label> 
       <asp:TextBox ID="tbUsername" runat="server"></asp:TextBox> 
       <asp:Button ID="btnConnect" runat="server" OnClick="btnConnect_Click" Text="Connect" /> 
      </ContentTemplate> 
     </asp:UpdatePanel> 
    </p> 
    <p>&nbsp;</p> 
    <p> 
     <asp:UpdatePanel ID="UpdatePanelConnected" runat="server"> 
      <ContentTemplate> 
       <asp:TextBox 
        ID="tbReceivedMessages" 
        runat="server" 
        Height="250px" 
        TextMode="MultiLine" 
        Width="250px" 
        MaxLength="2000000" 
        ReadOnly="True"></asp:TextBox> 
    </p> 
    <p>&nbsp;</p> 
    <p> 
       <asp:TextBox ID="tbSendMessage" runat="server"></asp:TextBox> 
       <asp:Button ID="btnSend" runat="server" OnClick="btnSend_Click" Text="Send" /> 
      </ContentTemplate> 
     </asp:UpdatePanel> 
    </p> 

</asp:Content> 
+0

Трудно вам помочь, когда мы не сможем увидеть ваш код. – Amy

+0

@ Ами добавил мой код. – R3muSGFX

ответ

1

Если вы хотите два элемента управления сервера, чтобы общаться друг с другом с помощью Ajax, вам нужно будет разместить их в таком же UpdatePanel.

FYI: Если вы новичок в веб-форме ASP.Net, не используйте UpdatePanel еще. Вместо этого заставьте его работать с обычной почтой.

<asp:UpdatePanel ID="UpdatePanelConnect" runat="server"> 
    <ContentTemplate> 
     <asp:Label ID="lblUsername" runat="server" Text="Enter username:"></asp:Label> 
     <asp:TextBox ID="tbUsername" runat="server"></asp:TextBox> 
     <asp:Button ID="btnConnect" runat="server" OnClick="btnConnect_Click" Text="Connect" /> 
     <asp:TextBox 
      ID="tbReceivedMessages" 
      runat="server" 
      Height="250px" 
      TextMode="MultiLine" 
      Width="250px" 
      MaxLength="2000000" 
      ReadOnly="True"></asp:TextBox> 
     </p> 
     <p>&nbsp;</p> 
     <p> 
      <asp:TextBox ID="tbSendMessage" runat="server"></asp:TextBox> 
      <asp:Button ID="btnSend" runat="server" OnClick="btnSend_Click" Text="Send" /> 
    </ContentTemplate> 
</asp:UpdatePanel> 

public void btnSend_Click(object sender, EventArgs e) 
{ 
    if (tbSendMessage.Text.Length > 0) 
    { 
     string message = tbSendMessage.Text; 
     // This code won't work. 
     /*byte[] outStream = Encoding.ASCII.GetBytes(message + "$"); 
     serverStream.Write(outStream, 0, outStream.Length); 
     serverStream.Flush(); 
     tbSendMessage.Text = string.Empty;*/ 
    } 
} 
+0

Спасибо за подсказку @Win. Но что именно вы подразумеваете под «кодом не будет работать»? Дело в том, что код работает очень хорошо, я тестировал его много раз. – R3muSGFX

+0

Обычно мы используем flush в Generic Handler, но это не является обычным явлением для потока в событии click. – Win

Смежные вопросы