【问题标题】:Prevent a control from databinding to an ObjectDataSource?防止控件数据绑定到 ObjectDataSource?
【发布时间】:2009-05-14 14:26:13
【问题描述】:

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

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

【问题讨论】:

    标签: c# asp.net c#-4.0 objectdatasource


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2016-12-15
      • 2017-01-30
      • 1970-01-01
      • 2019-08-02
      • 1970-01-01
      • 1970-01-01
      • 2020-07-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多