数値のクエリ文字列値を期待するページがあります。例えば:
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.]
...が発生します。これは防止したいことです。これを回避する簡単な方法のアイデアはありますか?