繁体   English   中英

ASP.NET TextBox不会从C#添加文本

[英]ASP.NET TextBox won't add text from C#

我正在尝试做一个多客户端-服务器应用程序。 在使用Windows窗体做了一些基本的控件和功能之后,我想到了将WebPage添加到我的客户端。

我创建了一个新项目并对其进行了编辑,它可以正常运行,该页面正在连接到服务器,并且接收到我从网页发送的消息。

当我需要在网页上的文本框中发布消息时遇到的问题。 我在互联网上的某些页面上进行了搜索,但找不到解决我问题的好方法。 我使用了Page.IsPostBack,但是它没有用,然后我添加了一个UpdatePanel,因为当我单击按钮时页面正在刷新,但是那也不起作用...现在我没有主意了。

有人可以建议我该怎么做吗? 我背后的代码是C#,但我不知道如何将这些详细信息解析为JavaScript或jQuery,因此你们中的任何人都有一些有关如何实现这些详细信息的信息,我们将不胜感激。

提前致谢。

如果这个问题很重要,我也将发布所需的任何信息。

编辑(添加的代码):

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>

如果希望两个服务器控件通过Ajax相互通信,则需要将它们放在同一UpdatePanel中

仅供参考: 如果您不熟悉ASP.Net Web窗体,请不要使用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;*/
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM