如何在与绑定重复器控件一起使用时对查询字符串进行消毒
本文关键字:查询 字符串 一起 绑定 控件 | 更新日期: 2023-09-27 18:05:04
给定以下URL:
domain.com/page.aspx?id=123
如何在数据绑定控件(如中继器SqlDataSource)上使用该查询字符串值?
<asp:SqlDataSource ID="projectDataSource" runat="server"
ConnectionString="MyConnectionStrings"
SelectCommand="select foo from bar">
<SelectParameters>
<asp:QueryStringParameter
DefaultValue="0"
Name="idfromqs"
QueryStringField="id"
Type="Int32" />
</SelectParameters>
</asp:SqlDataSource>
使?id=asdf
不产生错误?
这些类似的问题都有很好的答案,但似乎没有一个与我的问题非常吻合
- 在ASP中验证查询字符串. NET(检查发生在文件后面的代码中) 如何在Asp中拦截和预处理querystring。Net(对于一个简单的检查似乎过于激烈)
注意:这是一个内部应用程序,它被限制为本地ip地址的一小块。
您可以使用SQLDataSource
的Selecting
事件,在那里您可以检查查询值。此事件在调用选择方法之前触发。
protected void SqlDataSource1_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
{
SqlDataSource1.SelectParameters.Clear(); //Clear existing parameters
// based on your check, you can pass the default value
SqlDataSource1.SelectParameters["idfromqs"].DefaultValue = "Set Value here";
}
把字体去掉。querystring已经是字符串,除非将其显式转换为其他类型(如int32)。如果有理由将其转换为int32类型,可以稍后在代码中这样做,这样更容易对其应用逻辑。
<asp:QueryStringParameter
DefaultValue="0"
Name="idfromqs"
QueryStringField="id" />