Verhindern, dass eine Steuerung von Datenbindung an ein Object?
-
21-08-2019 - |
Frage
Ich habe eine Seite, die einen numerischen Query-String-Wert erwartet. Zum Beispiel:
Details.aspx?rgn=1234
Auf dieser Seite ist ein <asp:repeater>
, die zu einem <asp:objectdatasource>
datengebundene wird. Die Datenquelle sieht ungefähr wie folgt 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 bekommen passierte ich einen nicht-numerischen Wert von Hackern / Suchmaschinen / neugierig Leute. Ich bestätigen dies in meinem Page_Load. So 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 will. Irgendwelche Ideen eines einfachen Weg, dies zu umgehen?
Lösung
Ich antwortete meine eigene Frage. Ich habe vergessen, eine Response.End()
auf der dauerhaften Umleitung hinzuzufügen:
Response.Status = "301 Moved Permanently";
Response.AddHeader("Location",URL);
Response.End();