防止控件从数据绑定到ObjectDataSource?

时间:2009-05-14 14:26:14

标签: c# asp.net c#-4.0 objectdatasource

我有一个需要数字查询字符串值的页面。例如:

Details.aspx?rgn=1234

在此页面上是<asp:repeater>,其数据绑定为<asp:objectdatasource>。数据源看起来像这样:

<asp:ObjectDataSource ID="ObjectRegion" runat="server" SelectMethod="GetRegions" TypeName="Region">
  <SelectParameters>
    <asp:QueryStringParameter Name="RegionID" QueryStringField="rgn" Type="Int32" DefaultValue='0' />
  </SelectParameters>
</asp:ObjectDataSource>

由于这是一个公共页面,有时我会被黑客/搜索引擎/好奇的人传递给非数字值。我在我的Page_Load中验证了这一点。像这样:

protected void Page_Load(object sender, EventArgs e)
{
    int RegionID;
    string strRegion = Request.QueryString["rgn"];
    if(string.IsNullOrEmpty(strRegion) || !int.TryParse(strRegion, out RegionID))
    {
        // setup permanent redirect
        return;
    }
}

问题是我的转发器仍然进行数据绑定,导致[FormatException: Input string was not in a correct format.] ...这是我想要阻止的。有什么简单的方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

我回答了自己的问题。我忘了在永久重定向上添加Response.End()

Response.Status = "301 Moved Permanently";
Response.AddHeader("Location",URL);
Response.End();