[英]ASP.NET TextBox won't add text from C#
I am trying to do a multi Client - Server application. 我正在尝试做一个多客户端-服务器应用程序。 After I did some of the basic controls and functions with Windows Forms I thought to add a WebPage to my Client side. 在使用Windows窗体做了一些基本的控件和功能之后,我想到了将WebPage添加到我的客户端。
I created a new project and edited it and it works ok, the page is connecting to the server and it receives the messages I send from the web page. 我创建了一个新项目并对其进行了编辑,它可以正常运行,该页面正在连接到服务器,并且接收到我从网页发送的消息。
The problem I get when I need to post messages on a textbox on the web page. 当我需要在网页上的文本框中发布消息时遇到的问题。 I searched on some pages here, on the internet and I can't find a good solution for my problem. 我在互联网上的某些页面上进行了搜索,但找不到解决我问题的好方法。 I alose used the Page.IsPostBack but it didn't work, then I added an UpdatePanel because the page was refreshing when I clicked the buttons but that didn't work either... Now I am out of ideas. 我使用了Page.IsPostBack,但是它没有用,然后我添加了一个UpdatePanel,因为当我单击按钮时页面正在刷新,但是那也不起作用...现在我没有主意了。
Can anybody suggest how should I do this ? 有人可以建议我该怎么做吗? My code behind is C# and I don't know how to parse these details to JavaScript or jQuery, so any of you have some details on how to that it will also be appreciated. 我背后的代码是C#,但我不知道如何将这些详细信息解析为JavaScript或jQuery,因此你们中的任何人都有一些有关如何实现这些详细信息的信息,我们将不胜感激。
Thanks in advance. 提前致谢。
And also I will post anything needed if there is important for this question. 如果这个问题很重要,我也将发布所需的任何信息。
EDIT (Added code): 编辑(添加的代码):
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> </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> </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>
If you want two server controls to communicate each other via Ajax, you will need to place them in same UpdatePanel . 如果希望两个服务器控件通过Ajax相互通信,则需要将它们放在同一UpdatePanel中 。
FYI: If you are new to ASP.Net Web Form, do not use UpdatePanel yet. 仅供参考: 如果您不熟悉ASP.Net Web窗体,请不要使用UpdatePanel。 Instead, make it work with regular post back. 而是使其与常规回发一起使用。
<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> </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;*/
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.