Запретить привязку данных элемента управления к ObjectDataSource?
-
21-08-2019 - |
Вопрос
У меня есть страница, которая ожидает числовое значение строки запроса.Например:
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();
Не связан с StackOverflow