环境:.net 3.5、c#、sharepoint 2010
现有功能:我有一个带有搜索文本框和搜索按钮的用户控件。当提交按钮被点击时,连同搜索结果,一个带有搜索关键字的查询字符串被构建。在回发时,文本框再次填充来自查询字符串的搜索关键字。这很好用。
问题:需要修复横向脚本。html.encode 和过滤器也是如此,用 ' 转义单引号。对于文本框值。但是文本框显示的值就像“'searchingstring'”一样。
我只需要向用户显示“Searchstring”,但源代码中的值应该是 'searchingstring' 防止跨端脚本漏洞。
(注意:上面的文字“&”实际上是“&”。不是'。由于stackoverflow编辑器将其转换为单引号,我将其替换为&以供阅读)
如果我尝试使用 stringbuilder 在 pageinit 上动态构建文本框,我将得到我需要的东西,如上所述。例如:
StringBuilder sb = new StringBuilder();
if (Request.QueryString["str"] != null)
{
string strName = Request.QueryString["str"].ToString();
str_value = htmlCheckReturnData(strName ); //encoded string
sb.Append("<INPUT type='TEXT' runat = 'server' id = 'mystring' value = '" + str_value + "' />");
// Response.Write(sb.ToString());
}
else
{
sb.Append("<INPUT type='TEXT' runat = 'server' id = 'mystring' value = '' />");
}
ltlSearch.Text = sb.ToString();
但我需要检查页面加载中“mystring”文本框的值,例如,
if (!IsPostBack && !Page.IsAsync)
{
if (!string.IsNullOrEmpty(mystring.Value)) //NOT WORKING HOW TO GET the textbox value
{
//do something
}
}
注意:如果我在 page_init 上创建文本框控件而不使用 stringbuilder 写入方法,则带有编码的字符将显示在文本框上。
有什么帮助吗?
谢谢文卡特