我有一个需要数字查询字符串值的页面。例如:
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.]
... 这是我想要阻止的事情。任何解决此问题的简单方法的想法?