我有预期的数值查询字符串值的页面。例如:

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.] ......这是我想阻止。一个简单的方法的任何想法来解决这个问题?

有帮助吗?

解决方案

我回答我自己的问题。忘了对永久重定向添加Response.End()

Response.Status = "301 Moved Permanently";
Response.AddHeader("Location",URL);
Response.End();
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top