2009-05-14 8 views
0

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?

Antwort

0

Ich beantwortete meine eigene Frage. Ich habe vergessen, eine Response.End() auf der permanenten Umleitung hinzuzufügen:

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