2013-07-03 80 views
2

我已經開始變量,並宣佈他們爲什麼我的C#變量在Jquery中返回null?

protected string Image1; 
protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     string Image1 = Request.QueryString["ImageAlt1"]; 
    } 
} 

我已要求從jQuery的變量正常,當我測試鏈接我什麼也沒得到

$("#fancybox-manual-c").click(function() { 
      $.fancybox.open([ 
       { 
        href: '<%=Image1%>',/*returns '' instead of 'path/image.jpg'*/ 
        title: 'My title' 
       } 
      ], { 
       helpers: { 
        thumbs: { 
         width: 75, 
         height: 50 
        } 
       } 
      }); 

我想通了,我放在<%=Image1%> javascript內部返回null,因爲當我從href屬性中刪除所有值時,我得到了同樣的錯誤。

href:'' /*causes the jquery not to fire when the link is clicked*/ 

最後,我測試,看看是否Request.QueryString返航空,因此我放置在標籤

lblImage1.Text = Image1; //returns 'path/image.jpg' 

和路徑張貼在標籤圖像的image1值。爲什麼jQuery中的變量爲空?我錯過了什麼?

+1

您需要ReSharper - 它會警告您通過在Page_Load中定義一個新變量來隱藏受保護的Image1。 –

回答

9

因爲您只將條件中的值設置爲在範圍內創建的局部變量。

行更改爲這一點,它的工作:

Image1 = Request.QueryString["ImageAlt1"]; 
+1

在答案的第一分鐘獲得7張選票,現在8 ...猜猜影子嚮導是否在遊戲中可能是代表系統? – tawman

+0

不,我提高了它,我不知道誰是暗影嚮導。 –

+0

遊戲?他給出了第一個答案,它是一個很好的IMO,所以我贊成 – Jfabs

2

您有一個名爲「圖像1」的兩個變量。其中一個(根據你寫的代碼)將永遠不會被設置爲任何東西(並且它是打印的)。

protected string Image1; 
protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     string Image1 = Request.QueryString["ImageAlt1"]; // introduces a new variable named Image1 
     // this.Image1 and Image1 are not the same variables 
    } 
    // local instance of Image1 is no more. (out of scope) 
} 

試試這個

protected string Image1; 
protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     Image1 = Request.QueryString["ImageAlt1"]; 
    } 
} 

通知缺乏string。通過在它的類型前加一個變量,你可以在那個範圍內創建一個新的變量的本地實例。

+0

非常感謝sooo的解釋。我應該知道這個我盯着它一個小時。我希望我能標記2作爲答案暗影精靈擊敗你一拳,但你提供了一個很好的解釋! – Skullomania