DataBinding에서 ObjectDatasource 로의 제어를 방지합니까?
-
21-08-2019 - |
문제
숫자 쿼리 문자열 값을 기대하는 페이지가 있습니다. 예를 들어:
Details.aspx?rgn=1234
이 페이지에는 an이 있습니다 <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