阻止控件将数据绑定到 ObjectDataSource?

发布于 2024-07-20 07:40:10 字数 1028 浏览 2 评论 0原文

我有一个页面需要一个数字查询字符串值。 例如:

Details.aspx?rgn=1234

此页面上有一个 ,它数据绑定到 。 数据源看起来像这样:

<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: 输入字符串的格式不正确。]...这是我想阻止的事情。 有什么简单的方法来解决这个问题吗?

I have a page which expects a numeric query string value. For example:

Details.aspx?rgn=1234

On this page is an <asp:repeater> which is databound to an <asp:objectdatasource>. The datasource looks something like this:

<asp:ObjectDataSource ID="ObjectRegion" runat="server" SelectMethod="GetRegions" TypeName="Region">
  <SelectParameters>
    <asp:QueryStringParameter Name="RegionID" QueryStringField="rgn" Type="Int32" DefaultValue='0' />
  </SelectParameters>
</asp:ObjectDataSource>

Since this is a public page, sometimes I get passed a non-numeric value by hackers / search engines / curious folks. I validate this in my Page_Load. Something like this:

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;
    }
}

The problem is that my repeater still does its databinding anyway which causes a [FormatException: Input string was not in a correct format.]... which is something I want to prevent. Any ideas of a simple way to get around this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

醉态萌生 2024-07-27 07:40:10

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

Response.Status = "301 Moved Permanently";
Response.AddHeader("Location",URL);
Response.End();

I answered my own question. I forgot to add a Response.End() on the permanent redirect:

Response.Status = "301 Moved Permanently";
Response.AddHeader("Location",URL);
Response.End();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文