1

ユーザーが HTML タグを入力できるカスタム TextBox コントロールを作成する必要があります。HtmlEnabled という新しいプロパティを追加しました。デフォルトは false です。false の場合は、元の TextBox とまったく同じように動作します。true に設定されている場合は、Server.HtmlEncode を呼び出してテキストをエンコードします。カスタム コントロールを作成したことがないのですが、何をする必要があるか教えてもらえますか? オーバーライドする必要がある関数は何ですか? ありがとう。

次のように TextBoxEx クラスを作成しました: HtmlEnabled を true に設定しても検証エラーが発生します。

namespace WebApplication1
{
    [ToolboxData("<{0}:TextBoxEx runat=server></{0}:TextBoxEx")]
    public class TextBoxEx : System.Web.UI.WebControls.TextBox
    {
        public bool HtmlEnabled
        {
            get
            {
                return (bool)ViewState["HtmlEnabled"];
            }
            set
            {
                ViewState["HtmlEnabled"] = value;
            }
        }

        public TextBoxEx()
        {
            ViewState["HtmlEnabled"] = false;
        }

        public override string Text
        {
            get
            {
                if (HtmlEnabled)
                    return HttpUtility.HtmlEncode(base.Text);
                else return base.Text;
            }

            set
            {
                if (HtmlEnabled)
                    base.Text = HttpUtility.HtmlDecode(value);
                else base.Text = value;
            }
        }


    }
}
4

2 に答える 2

0

TextBoxコントロールから継承し、Textプロパティをオーバーライドできるように思えます。この記事では、それを実行する方法を開始する必要があります。

http://www.4guysfromrolla.com/articles/100103-1.aspx

于 2011-11-08T16:25:44.403 に答える
0

ページが HTML タグを受け入れるようにするには、リクエストの検証を無効にする必要があります。

<%@ Page Language="C#" ValidateRequest="false" AutoEventWireup="true" CodeBehind="TestPage.aspx.cs" Inherits="MyNamespace.TestPage" %>

これは、テキスト ボックス コントロールとは関係ありません。リクエストの検証では、すべてのページ入力 (クエリ文字列パラメーター、Cookie、ヘッダー、およびフォーム フィールド) をチェックして、リクエストに悪意のある可能性のあるスクリプトが含まれていないことを確認します。オフにすることで、入力が自分自身に害を及ぼさないことを検証する必要があることに注意してください。

于 2014-09-19T20:20:18.937 に答える