2013-04-17 27 views
0

我有一個頁面,其中包含使用Javascript顯示來自特定文件夾(幻燈片放映)的圖像的圖像控件。我在頁面加載中設置了HiddenField Value的值,並希望使用Javascript訪問這些值。但是,在頁面加載中設置隱藏字段的值後,Javascript中的隱藏字段的值顯示NULL。如何在頁面加載時設置HiddenField的值,並在asp.net中使用Javascript進行訪問?

在.aspx頁面中:

<!DOCTYPE html> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
    <script src="Scripts/jquery-1.4.1.min.js"></script> 


</head> 
    <script type="text/javascript"> 

     var folderNm = document.getElementById('<%#HiddenFieldFolderName.ClientID%>'); 
     var MaxIndex = document.getElementById('<%#HiddenFieldMaxIndex.ClientID%>'); 
     var mainImage = document.getElementById('mainImage'); 
     //mainImage.src = "Presentations/7/Slide1.GIF"; 
     //Initilize start value to 1 'For Slide1.GIF' 
     var currentIndex = 1; 

     //NOTE: Set this value to the number of slides you have in the presentation. 
     //var maxIndex = 7; 
     var maxIndex = MaxIndex; 
     alert("Folder Name " + folderNm + "\n MaxIndex " + MaxIndex); 
     function swapImage(imageIndex) { 
      //Check if we are at the last image already, return if we are. 
      if (imageIndex > maxIndex) { 
       currentIndex = maxIndex; 
       return; 
      } 

      //Check if we are at the first image already, return if we are. 
      if (imageIndex < 1) { 
       currentIndex = 1; 
       return; 
      } 

      currentIndex = imageIndex; 
      //Otherwise update mainImage 
      //document.getElementById("mainImage").src = 'PPT/GIFs/Slide' + currentIndex + '.GIF'; 
      document.getElementById("mainImage").src = 'Presentations/' + folderNm + '/' + 'Slide' + currentIndex + '.GIF'; 
      // document.getElementById("mainImage").src = 'Presentations/7/Slide' + currentIndex + '.GIF'; 
      return; 
     } 
    </script> 
<body> 
    <form id="form1" runat="server" > 
     <div> 
      <div> 

       <%-- <img src="PPT/GIFs/Slide1.GIF" id="mainImage" name="mainImage" width="50%" height="50%" alt="">--%> 
       <img id="mainImage" name="mainImage" width="25%" height="25%" alt=""> 
      </div> 
      <div> 
       <a href="#" onclick="swapImage(0);"> 
        <img src="/images/firstss.png" border="0" alt="First"></a> 
       <a href="#" onclick="swapImage(currentIndex-1);"> 
        <img src="/images/prev.png" border="0" alt="Previous"></a> 
       <a href="#" onclick="swapImage(currentIndex+1);"> 
        <img src="/images/nexts.png" border="0" alt="Next"></a> 
       <a href="#" onclick="swapImage(maxIndex);"> 
        <img src="/images/lasts.png" border="0" alt="Last"></a> 
      </div> 
      <div> 
       <asp:HiddenField ID="HiddenFieldMaxIndex" runat="server" /> 
       <asp:HiddenField ID="HiddenFieldFolderName" runat="server" /> 

      </div> 
     </div> 
    </form> 
</body> 

</html> 

在.aspx.cs文件:

protected void Page_Load(object sender, EventArgs e) 
     { 
      string foldername = string.Empty; 
      if (Request.QueryString["di"] != null) 
      { 
       foldername = Request.QueryString["di"].ToString(); 
       HiddenFieldFolderName.Value = foldername; 
       HiddenFieldMaxIndex.Value = Request.QueryString["Files"].ToString(); 
      } 

    } 

在這裏,隱藏字段值顯示警告()框爲空。幫助讚賞。

回答

1

您需要修改

<%#HiddenFieldFolderName.ClientID%> 

<%= HiddenFieldFolderName.ClientID %> 

執行相同的​​見ASP.NET inline expressionsthis question

+0

此外,請確保您採取的是價值,而不是對象本身。 var folderNm = document.getElementById('<%#HiddenFieldFolderName.ClientID%>').value; – Yeronimo

+0

雅我也試過'價值'它也顯示'空':( –

+1

@SHEKHARSHETE,你是否用'<%='而不是'<%#'來試試 – Habib

0

如果你檢查你的頁面的源代碼,你看到隱藏投入?

如果我是正確的(最近沒有使用過很多webforms),buildin asp:HiddenField dons不會將字段放在生成的HTML中。因此,您的JavaScript函數無法找到該字段並返回null。

您可以使用asp:TextBox組件並使用css(display:none;)隱藏它。這樣,文本框呈現在HTML中,但最終用戶不可見(除了當他搜索頁面源時)。你的JavaScript會找到控件,並能夠讀取文本框的值。

嘗試使用Firefox等Firebug工具或Chrome的頁面檢查器來處理這類錯誤。

+0

我也嘗試過TextBox,但它仍然顯示'空'請任何其他解決方案? –

+0

網頁是否在某處在線?你能給一個URL?然後我可以看一看 –

0

您已經添加了對jquery的引用,那麼爲什麼不使用它?

var folderNm= $("#<%= HiddenFieldFolderName.ClientID %>").val(); 
var index= $("#<%= HiddenFieldMaxIndex.ClientID %>").val(); 

alert("Folder Name " + folderNm+ "\n MaxIndex " + index); 

做同樣的其他..

即使使用上述僅是行不通的,因爲當你訪問隱藏字段文檔可能還沒有準備好。

var currentIndex = 1; 
    var folderNm = 0; 
    var MaxIndex = 0; 
    alert($("#<%= HiddenFieldFolderName.ClientID %>").val()); // this will return null 

    // but when document ready you can get values, 
    $(document).ready(function() { 
     folderNm= $("#<%= HiddenFieldFolderName.ClientID %>").val(); 
     MaxIndex= $("#<%= HiddenFieldMaxIndex.ClientID %>").val(); 
     alert("Folder Name " + folderNm+ "\n MaxIndex " + MaxIndex); 
    }); 

如果您需要在不jquery把所有的代碼來檢查這裏面swapImage功能檢查,它會工作。

REF:jquery ID Selector (「#id」)

相關問題