0

数値のクエリ文字列値を期待するページがあります。例えば:

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.]...が発生します。これは防止したいことです。これを回避する簡単な方法のアイデアはありますか?

4

1 に答える 1

0

私は自分の質問に答えました。Response.End()永続的なリダイレクトにを追加するのを忘れました:

Response.Status = "301 Moved Permanently";
Response.AddHeader("Location",URL);
Response.End();
于 2009-05-14T14:35:36.330 に答える