我在XML文件中设置了一个带有错误单词的亵渎过滤器,并在我的页面上运行以下功能来替换单词:
BadWordFilter.Instance.GetCleanString(TextBox1.Text);
我即将通过我的整个网站,现在将这个功能逐个包裹在每个小文本变量中,这将是一个非常痛苦的屁股
我希望有一种方法可以设置我的母版页以在任何page_load上自动运行所有文本,这样效果将立即在整个网站范围内。这有可能吗?
非常感谢任何帮助
答案 0 :(得分:1)
我的一个简单提示是使用asp.net的标记映射功能:
此链接有一个使用HTMLEncode的示例实现,但您明白了这一点:http://www.devwebpro.co.uk/devwebprouk-46-20071010ASPNETTagMapping.html
HTH。
答案 1 :(得分:0)
我意识到你说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);
}
}
这是一个hack,它将帮助您解决当前的问题:重写TextBox控件最终是一个更好的解决方案。