2014-01-09 165 views
0

我通過url發送一個id然後通過「請求」獲取它,從一個頁面重定向到另一個頁面。我遇到的問題是有兩種方法可以訪問該頁面。請求參數不存在時,如何處理請求?

  1. 檢查鏈接,它會向您發送一個帶有id的url。 (這工作)
  2. 通過直接去頁面,因此不帶任何身份證與你。 (這不和thows錯誤)

異常詳細信息:System.InvalidOperationException:可空對象 必須有一個值。

如何當您將被重定向爲方案1的鏈接將看,當你直接在方案2

1. http://localhost/red/time/time.aspx?id=154 

2. http://localhost/red/time/ 

    if (!IsPostBack) 
    { 

     //Bladdra(4, 0); 
     txtTidrapportnr.Text = Request["id"]; 

     if (Request != null) 
     { 
      Hamta(General.ToInt(txtTidrapportnr.Text).Value); 
      Visa(); 
      btnNy.Focus(); 
     } 
     else 
     { 
      Bladdra(4, 0); 
      Visa(); 
      btnNy.Focus(); 
     } 


    } 

我的問題是如何獲取的頁面在方案1的工作都和2.好像

如果(詢價!= NULL)

是不正確的。

回答

1

你是做了錯誤的事情是,befor檢查你正在嘗試與文本框的值的正確方法將其指定爲做事的空值如下:

if (!IsPostBack) 
    { 

     //Bladdra(4, 0); 
     //txtTidrapportnr.Text = Request["id"]; 

     if (Request["id"] != null) 
     { 
      txtTidrapportnr.Text =Convert.ToString(Request["id"]); 

      Hamta(General.ToInt(txtTidrapportnr.Text).Value); 
      Visa(); 
      btnNy.Focus(); 
     } 
     else 
     { 
      Bladdra(4, 0); 
      Visa(); 
      btnNy.Focus(); 
     } 


    } 
0

如果你的頁面應該只有工作的時候id請求參數,那麼你將不得不像其他人所建議的那樣檢查它的存在 - 你不能阻止一個頁面被自動訪問,因爲沒有任何東西阻止你從瀏覽器手動打開URL。

如果參數不存在,您應該優雅地處理它。我使用的典型方法是重定向到已知的安全頁面(例如主頁),如果URL不包含我需要的所有內容,但我想你也可以在頁面上顯示警告消息。