0

我有一个页面,其中包含使用 Javascript 显示特定文件夹(幻灯片放映)中的图像的图像控件。我已在页面加载时设置了 HiddenField 值的值,并希望使用 Javascript 访问这些值。但是,在页面加载上设置隐藏字段的值后,Javascript 中的隐藏字段的值显示为 NULL。

在 .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();
            }

    }

此处,隐藏字段值在 alert() 框中显示为 null。帮助赞赏。

4

3 回答 3

1

你需要修改

<%#HiddenFieldFolderName.ClientID%>

<%= HiddenFieldFolderName.ClientID %>

<%#HiddenFieldMaxIndex.ClientID%>对See ASP.NET 内联表达式这个问题做同样的事情

于 2013-04-17T09:46:31.803 回答
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 选择器(“#id”)

于 2013-04-17T09:57:55.870 回答
0

如果您检查页面的来源,您是否看到隐藏的输入?

如果我是正确的(最近没有经常使用网络表单),内置 asp:HiddenField 不会将该字段放入生成的 HTML 中。因此,您的 javascript 函数找不到该字段并返回 null。

您可以使用 asp:TextBox 组件并使用 css (display:none;) 将其隐藏。这样,文本框在 HTML 中呈现,但对最终用户不可见(除非他正在通过页面源进行搜索)。您的 javascript 将找到控件并能够读取文本框的值。

尝试使用诸如 Firefox 的 Firebug 或 Chrome 的页面检查器之类的工具来处理此类错误。

于 2013-04-17T09:49:38.457 回答