与数据绑定转发器控件一起使用时如何清理查询字符串?

时间:2011-08-09 17:25:58

标签: c# asp.net query-string repeater sqldatasource

给出以下网址:

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不会导致错误?

这些类似的问题有很好的答案,但它们似乎都不符合我的问题

注意:这是一个内部应用程序,仅限于一小块本地IP地址。我不太担心恶意sql注入,更多的是关于防止不那么精明的用户看到令人讨厌的错误消息。

2 个答案:

答案 0 :(得分:2)

您可以使用Selecting的{​​{1}}事件来检查查询值。在调用Select方法之前会触发此事件。

SQLDataSource

答案 1 :(得分:1)

请关闭此类型。查询字符串是已经是字符串,除非您将其显式转换为其他字符串(如int32)。如果有一些理由将它转换为int32,那么你可以在代码中稍后更容易应用逻辑。

<asp:QueryStringParameter 
   DefaultValue="0" 
   Name="idfromqs" 
   QueryStringField="id" />