У меня есть страница, которая ожидает числовое значение строки запроса. Например:
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.]
... что я хочу предотвратить. Любые идеи о простом способе обойти это?