Ich habe eine Seite, die einen numerischen Abfragezeichenfolgenwert erwartet. Zum Beispiel:Verhindern, dass ein Steuerelement eine Datenbindung an eine ObjectDataSource ausführt?
Details.aspx?rgn=1234
Auf dieser Seite ist ein <asp:repeater>
, die zu einem <asp:objectdatasource>
datengebundene wird. Die Datenquelle sieht ungefähr so aus:
<asp:ObjectDataSource ID="ObjectRegion" runat="server" SelectMethod="GetRegions" TypeName="Region">
<SelectParameters>
<asp:QueryStringParameter Name="RegionID" QueryStringField="rgn" Type="Int32" DefaultValue='0' />
</SelectParameters>
</asp:ObjectDataSource>
Da dies eine öffentliche Seite, manchmal ich einen nicht-numerischen Wert von Hackern/Suchmaschinen/neugierig Leute bekommen übergeben. Ich bestätige dies in meinem Page_Load. Etwas wie folgt aus:
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;
}
}
Das Problem ist, dass mein Repeater tut es immer noch seine Datenbindung ohnehin die eine [FormatException: Input string was not in a correct format.]
verursacht ... das ist etwas, das ich verhindern wollen. Irgendwelche Ideen von einem einfachen Weg, um dies zu umgehen?