2012-01-04 13 views
0

私は自分のページにASP.NETテキストボックスを追加しましたが、次と前のボタンがあります。私は文字列を入力しました。Hello "World"と入力してください。次のボタンをクリックしてレビューページ(編集不可)を表示し、すべてのデータをセッショインに保存します。この後、前のボタンをクリックして、入力フィールド(編集ページ)を表示します。この間、私はセッションからデータを取得して、それをASP.NETのテキストボックスに戻して表示しています。ASP.NET Textboxは二重引用符の後の文字列を省略します

私はこのページを見ると、ダブルクォーテーションの後に入力されたものがASP.NETテキストボックスから削除されています。つまり、私はこんにちはしか見ることができません。

私の要件は、私はユーザーが二重引用符を入力できるようにする必要があります。

これを修正する方法はありますか?

+0

、デバッグしようとしたましたか?セッションでデータが正しくセーブされていますか? –

+0

まず、二重引用符を削除することを知る必要があります。私はデバッグして、あなたが投稿した後にあなたのサーバー側にどんな価値があるのか​​を知ることをお勧めします。値がOKの場合は、二重引用符が削除されている場所を探してください。 – aleafonso

答えて

0

私はこれまでにこの問題を抱えていませんでした。ユーザーがテキストボックスに二重引用符を入力しても問題ありません。

あなたが原因を見つける

に引用したり、コードのデバッグをフィルタリングするためにいくつかのプログラムロジックを持っているかどうかをチェックすることができます。以下は簡単なテストコードです。

<form id="form1" runat="server"> 
<div> 
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
    <asp:Button 
    ID="Button1" runat="server" Text="Button" onclick="Button1_Click" /> 
    <asp:Button ID="Button2" runat="server" Text="Button" onclick="Button2_Click" /> 

</div> 
</form> 

protected void Button1_Click(object sender, EventArgs e) 
{ 
    Session.Add("KK",this.TextBox1.Text); 
} 
protected void Button2_Click(object sender, EventArgs e) 
{ 
    this.TextBox1.Text = Session["KK"] as string; 
} 
+0

ありがとう、すべて私は実際にはSystem.Web.UI.WebControls.TextBoxから継承するカスタムコントロールを使用しています。コントロールのレンダリングメソッドで、output.Write(string.Format( ""、UniqueID、Text、args));このテキスト値の が正しくエスケープされていません。 – nimi

2

ASP.NETは、テキストボックスに引用符を削除しませんので、私はレビューのためにコードを投稿お勧めします。

ただし、入力フィールドに引用符を使用できる場合は、トリガー要求の検証が行われることがあります。この場合、潜在的に危険な要求について非常に具体的なエラーが表示されることがあります。

XSS攻撃については、引用符を許可するテキストフィールドを確認する必要があります。

1

今すぐ遭遇するケースを再現します。値のプロパティで二重引用符を使用すると、

の値と重複し、テキストボックスに二重引用符が含まれます。だからあなたは

出力構文で二重引用符を一重引用符に変更する必要があります。

あなたは以下のコード試すことができます:あなたはまた、あなたがHTMLを作成するいくつかの助けを提供HtmlTextWriterに出力していることを利用することができる「レンダリング」を上書きした場合

output.Write(string.Format("<input name=\"{0}\" id=\"{0}\" type=\"text\" value=\'{1}\'{2}/>", UniqueID, Text, args)); 
0

を。

以下のサンプルはあなたのアプローチよりも冗長ですが、出力が何が起こっているのかを認識させ、HtmlTextWriter(出力)に値などを挿入できるようにします。HtmlTextWriterは、適切なエスケープが値に対して実行されます。

protected override void RenderContents(HtmlTextWriter output) 
    { 
     output.AddAttribute(HtmlTextWriterAttribute.Name, UniqueID); 
     output.AddAttribute(HtmlTextWriterAttribute.Type, Text); 
     output.AddAttribute(HtmlTextWriterAttribute.Value, Value); 
     output.RenderBeginTag(HtmlTextWriterTag.Input); 
     output.RenderEndTag(); 
    } 

代わりに、あなたは文字値などの問題を回避するためにSystem.Web.HttpUtility.HtmlEncodeを使用することができ

関連する問題