从后面的代码中访问jquery变量

时间:2015-08-20 22:29:33

标签: c# jquery asp.net

这是我的HTML:

<input type="hidden" id="HiddenIndex" name="HiddenIndex" runat="server" />

一些标签和文本框

 <asp:Button runat="server" ID="btnGetCoordinates" 
    Text="Get Coordinates" OnClick="btnGetCoordinates_Click" /> 
   <asp:Label ID="info" runat="server" Text="Waiting...." />

因此,当单击按钮获取坐标时,它将调用Web服务以从后面的代码返回一些json结果。对话框将弹出包含这些结果的列表框。它完美地工作到这一点。我的目标是当客户选择列表中的项目并单击“选择”按钮时,它将返回所选项目的索引,存储在隐藏字段中,稍后从后面的代码中操作。 这是我的jquery函数         

function ShowPopup()
{
    $("#parentForm").fadeTo(500, .2);       

    $("#C1Dialog1").dialog({            

         open: function () {
             $(".ui-dialog-titlebar-close").hide();                 
         },
         buttons: [{
             text: "Select",
             click: function () {
                 var value = " ";
                 storedIndex = " ";
                 var selected = $("[id*=lstCandidates] option:selected");
                 selected.each(function () {
                     value = $(this).val();
                     storedIndex = $(this).index();
                     $("#HiddenIndex").val(storedIndex);                        
                 });
                 alert(value + " and index is " + storedIndex);  //Show value and index
                 alert("html hidden value " + $("#HiddenIndex").val());  //show value                 

                 $(this).dialog("close");
                 $("#parentForm").fadeTo(500, 1);                    
             },
             style: "margin-right: 40px;"
         },
         {
             text: "Cancel",
             click: function () {
                 $(this).dialog("close");
                 $("#parentForm").fadeTo(500, 1);
             },
             style: "margin-left:0px;"
         }]
    });
}   
</script>

如您所见,警报显示隐藏字段的值 这是我的代码

   protected void btnGetCoordinates_Click(object sender, EventArgs e)
   {
        //Show the Dialog
        if (count > 0)
        {
            ClientScript.RegisterStartupScript(this.GetType(), "Popup", "ShowPopup();", true);  

/ /永远不会停在这里 - -PROBLEM RIGHT HERE **,隐藏字段没有值**

        var indexValue = Request.Form["HiddenIndex"];
          info.Text = "HiddenIndex is " + indexValue;         
        }
    } 

当我点击Dialog的选择按钮时,Info标签不显示任何内容 非常感谢任何帮助,非常感谢。

1 个答案:

答案 0 :(得分:0)

客户端ID可能存在问题。发布HTML时,ASP.NET不一定会在标记中使用客户端ID。

有几种方法可以解决这个问题,但最简单的方法是使隐藏字段成为纯HTML控件。那样ASP.NET就不会惹恼它了。所以改变这个

<input type="hidden" id="HiddenIndex" name="HiddenIndex" runat="server" />

到这个

<input type="hidden" id="HiddenIndex" name="HiddenIndex"/>

其他选择:

  1. clientIDmode设置为静态
  2. 修改您的jquery选择器以使用id$='HiddenIndex',使其ignores any prefix added by ASP.NET