Как создать производный элемент управления TextBox? - PullRequest
1 голос
/ 08 ноября 2011

Мне нужно создать пользовательский элемент управления TextBox, который позволяет вводить теги HTML пользователя.Я добавил новое свойство с именем HtmlEnabled, по умолчанию 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;
            }
        }


    }
}

Ответы [ 2 ]

0 голосов
/ 20 сентября 2014

Чтобы разрешить странице принимать теги HTML, необходимо отключить проверку запроса.

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

Это не имеет ничего общего с элементом управления textbox, проверка запроса проверяет все вводимые страницы (строка запросапараметры, файлы cookie, заголовки и поля формы), чтобы гарантировать отсутствие потенциально опасных сценариев в запросе.Имейте в виду, что, выключив его, вы должны будете убедиться, что ввод сам по себе не вреден.

0 голосов
/ 08 ноября 2011

Похоже, вы могли бы просто наследовать от элемента управления TextBox и переопределить свойство Text.Эта статья поможет вам понять, как это сделать:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...