سؤال

ولدي الصفحة التي تتوقع قيمة سلسلة الاستعلام رقمية. على سبيل المثال:

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>

وبما أن هذه هي صفحة عامة، وأحيانا أحصل على تمرير قيمة غير رقمية من قبل قراصنة / محركات البحث / الناس غريبة. I تحقق هذا في بلدي 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();
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top