J'ai une page qui attend une valeur de chaîne de requête numérique. Par exemple:Empêche un contrôle de liaison de données à un objet ObjectDataSource?
Details.aspx?rgn=1234
Sur cette page est un <asp:repeater>
qui est DataBound à un <asp:objectdatasource>
. La source de données ressemble à ceci:
<asp:ObjectDataSource ID="ObjectRegion" runat="server" SelectMethod="GetRegions" TypeName="Region">
<SelectParameters>
<asp:QueryStringParameter Name="RegionID" QueryStringField="rgn" Type="Int32" DefaultValue='0' />
</SelectParameters>
</asp:ObjectDataSource>
Depuis c'est une page publique, parfois je suis passé d'une valeur non numérique par les pirates/moteurs de recherche/gens curieux. Je valide ceci dans mon Page_Load. Quelque chose comme ceci:
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;
}
}
Le problème est que mon répéteur fait encore son databinding de toute façon qui provoque une [FormatException: Input string was not in a correct format.]
... ce qui est quelque chose que je veux éviter. Des idées d'un moyen simple de contourner cela?