я могу быстро выполнить весь текст страницы через функцию при загрузке страницы? - PullRequest
0 голосов
/ 15 мая 2010

Я настроил фильтр ненормативной лексики с плохими словами в файле XML и имею следующую функцию для запуска на моей странице, чтобы заменить слова:

BadWordFilter.Instance.GetCleanString (TextBox1.Text);

Я собираюсь просмотреть весь свой сайт, теперь оборачивая эту функцию вокруг каждой маленькой текстовой переменной, одну за другой, и это будет огромная боль в заднице

Я надеюсь, что есть способ, с помощью которого я мог бы просто настроить свою мастер-страницу так, чтобы она автоматически пропускала весь текст через эту вещь на любой page_load, чтобы эффект был мгновенным для всего сайта. это возможно?

высоко ценится за любую помощь

Ответы [ 2 ]

1 голос
/ 15 мая 2010

Один быстрый совет, который я имею, состоит в том, чтобы использовать функцию сопоставления тегов asp.net для этого:

  • Создание пользовательского класса текстового поля, производного от класса TextBox
  • Переопределить свойство get / set Text и в части get вернуть очищенную строку
  • Используйте функцию сопоставления тегов в файле web.config, чтобы заменить все классы TextBox вашим классом текстового поля, и все должно работать очень хорошо.

Эта ссылка имеет пример реализации, в котором используется HTMLEncode, но вы понимаете: http://www.devwebpro.co.uk/devwebprouk-46-20071010ASPNETTagMapping.html

НТН.

0 голосов
/ 15 мая 2010

Я понимаю, что вы сказали Page_Load(), но я подозреваю, что это сделает то, что вам нужно.

В событии Page.PreRender пройдитесь по элементам управления:

/* inside Page_PreRender() handler...*/
if (user_options.filterBadWords == true)
{
    FilterControls(this);
}    

/* this does the real work*/
private void FilterControls(Control ctrl)
{
    foreach (Control c in ctrl.Controls)
    {
        if (c.GetType().ToString() == "System.Web.UI.WebControls.TextBox")
        {
            TextBox t = (TextBox)c;
            /* do your thing */
            t.Text = BadWordsFilter(t.Text);
        }
        if (c.HasControls())
            FilterControls(c);
    }
}

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

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