2009-05-14 2 views
0

У меня есть страница, которая ожидает числовое значение строки запроса. Например:Предотвратить контроль привязки данных к объекту ObjectDataSource?

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

ответ

0

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

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