Предохранить элемент управления от привязки данных к ObjectDataSource? - PullRequest
0 голосов
/ 14 мая 2009

У меня есть страница, которая ожидает числовое значение строки запроса. Например:

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.] ... что я хочу предотвратить. Любые идеи о простом способе обойти это?

1 Ответ

0 голосов
/ 14 мая 2009

Я ответил на свой вопрос. Я забыл добавить Response.End() на постоянном перенаправлении:

Response.Status = "301 Moved Permanently";
Response.AddHeader("Location",URL);
Response.End();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...