因為不需要整頁全部送回 Server 端,所以會採用像 .Net 的 AJAX Control 來做,
<asp:UpdatePanel ID="UpdateDOCTypePanelTrigger" UpdateMode="always" runat="server">
<ContentTemplate>
<asp:TextBox ID="test" AutoPostBack="true" OnTextChanged="test_TextChanged" runat="server"></asp:TextBox>
<asp:Label ID="testInfo" runat="server"></asp:Label>
</ContentTemplate>
<Triggers>
<asp:AsyncPostbackTrigger ControlID="test" EventName="TextChanged" />
</Triggers>
</asp:UpdatePanel>
.
但是送中文字回 Server 會有亂碼,所以需要特別處理一下。
找到的解決方法大概有兩種:
.
第一種是
protected void test_TextChanged(object sender, EventArgs e)
{
byte[] buffer = System.Text.Encoding.Default.GetBytes(test.Text);
testInfo.Text += System.Text.Encoding.UTF8.GetString(buffer);
}
這一種有一個缺點,有時候用GetBytes會漏一個byte,
所以解出來還有可能會有一個字是亂碼。
.
另外一種
protected void test_TextChanged(object sender, EventArgs e)
{
string s = System.Text.Encoding.UTF8.GetString(Request.BinaryRead(Request.ContentLength));
System.Collections.Specialized.NameValueCollection form = HttpUtility.ParseQueryString(s);
testInfo.Text += form[test.UniqueID];
}
稍微複雜一點,但是可以正確解出來,
就用這個了吧!
.
還是有更好的解法呢?
沒有留言:
張貼留言