2017-08-28 35 views
0

我想從會話中獲得4個值,而我得到其中兩個,其他兩個都是missing.i我仍然在學習,所以如果我的問題太幼稚了,請耐心等待。 。我在樹形視圖中有這個複選框和兩個單選按鈕。無法獲得在C中使用JavaScript的會話值#

ASP.NET代碼

 <div class="control-label col-sm-1"> 
 
    <asp:TreeView runat="server" ID="tvAi" Font-Bold="true" ShowLines="true" EnableClientScript="true" 
 
     ShowExpandCollapse="true" ShowCheckBoxes="All" > 
 
     </asp:TreeView> 
 
<asp:HiddenField ID="hdMobile" runat="server" /> 
 
</div>

現在,當我去到Chrome開發者工具和檢查單選按鈕會話值結合良好,顯示了這樣的價值觀。

<input type="radio" checked="checked" id="rad_01-02-00000622" name="rdoC1" value="01-02-00000622_Deposit_1_109861">

由 '_' 分別accountNumber_accountType_officeId_customerId分離這四個值。

JavaScript的這臺會議

$(function() { 
 
     $("[id*=tvAi] input[type=checkbox]").bind("click", 
 
      function() { 
 

 

 
       var table = $(this).closest("table"); 
 

 
       if (table.next().length > 0 && table.next()[0].tagName == "DIV") { 
 
        //Is Parent CheckBox 
 
        var childDiv = table.next(); 
 
        var isChecked = $(this).is(":checked"); 
 
        if (isChecked) { 
 
         if ($('#CellNumberTextBox').val() == null || $('#CellNumberTextBox').val() === '') { 
 
          bootbox.alert(
 
           "Please enter the Cell Number because you have asked for the MobileBankingService."); 
 
          this.checked = false; 
 
          $('#CellNumberTextBox').focus(); 
 
          return false; 
 
         } 
 
        } 
 
        $("input[type=radio]", childDiv).each(function() { 
 
         if (isChecked) { 
 

 
          $(this).attr("checked", "checked"); 
 
          return false; 
 
         } else { 
 
          $(this).removeAttr("checked"); 
 
         } 
 

 
        }); 
 

 
       } 
 
      }); 
 

 
     $("[id*=tvAi] input[type=radio]").bind("click", 
 
      function() { 
 
       //hdMobile 
 
       var parentDIV = $(this).closest("DIV"); 
 
       if ($(this).is(":checked")) { 
 

 
        if ($('#CellNumberTextBox').val() == null || $('#CellNumberTextBox').val() === '') { 
 
         bootbox.alert(
 
          "Please enter the Cell Number because you have asked for the MobileBankingService."); 
 
         this.checked = false; 
 
         $('#CellNumberTextBox').focus(); 
 
         return false; 
 
        } 
 

 
        $("input[type=checkbox]", parentDIV.prev()).attr("checked", "checked"); 
 
       } else { 
 
        $("input[type=checkbox]", parentDIV.prev()).removeAttr("checked"); 
 
       } 
 
      }); 
 
     $("#SaveButton").bind("click", 
 
      function(e) { 
 
       $("#hdMobile").val(""); 
 
       var tv = document.getElementById("<%= tvAi.ClientID %>"); 
 
       var chkArray = tv.getElementsByTagName("input"); 
 
       for (i = 0; i <= chkArray.length - 1; i++) { 
 

 
        if (i == 0) { 
 
         $.ajax({ 
 
          type: "POST", 
 
          url: "AddNewCustomer.aspx/SetSession", 
 
          data: {}, 
 
          contentType: "application/json; charset=utf-8", 
 
          dataType: "json", 
 
          success: function() { 
 

 
          } 
 
         }); 
 
        } 
 

 
        if (chkArray[i].type == 'radio') { 
 

 
         if (chkArray[i].checked == true) { 
 
          if ($('#CellNumberTextBox').val() == null || $('#CellNumberTextBox').val() === '') { 
 
           bootbox.alert(
 
            "Please enter the Cell Number because you have asked for the MobileBankingService."); 
 
           $('#CellNumberTextBox').focus(); 
 
           $.hideprogress(); 
 
           return false; 
 
          
 

 
          if ($("#hdMobile").val() == "" || $("#hdMobile").val() == null) { 
 
           $("#hdMobile").val(chkArray[i].value); 
 
          } else { 
 
           $("#hdMobile").val($("#hdMobile").val() + "," + chkArray[i].value); 
 
          } 
 
         } 
 
        } 
 
       } 
 

 
      }); 
 
    });

我的代碼背後設置會話

和有約束力的樹狀代碼

private void BindTreeViewForMobile() 
{ 
    _customerId = Convert.ToInt64(Session["CustomerId"]); 

    if (_customerId > 0) 
    { 
     DataTable dtAccount = new DataTable(); 
     dtAccount = BusinessLayer.SMS.SmsSetup.GetActiveAccountListByCustomer(_customerId); 

     tvAi.Nodes.Clear(); 
     int redindex = 1; 

     string accNumber = ""; 
     var customerMobileBanking = BusinessLayer.SMS.MobileBankingSetup.GetMobileBankingCustomer(_customerId); 
     foreach (DataRow dr in dtAccount.Rows) 
     { 
      if (customerMobileBanking != null) 
      { 

       foreach (Common.SMS.MobileBankingSetup ss in customerMobileBanking) 
       { 
        if (ss.AccountNumber == dr["account_number"].ToString()) 
        { 
         if (ss.FeeCharges) 
         { 
          accNumber = ss.AccountNumber; 

          break; 
         } 
         else 
         { 
          accNumber = ""; 

          break; 
         } 
        } 
       } 
      } 


      TreeNode master = new TreeNode(dr["account_number"].ToString(), dr["account_number"].ToString()); 
      master.ShowCheckBox = true; 
      tvAi.Nodes.Add(master); 
      master.SelectAction = TreeNodeSelectAction.None; 
      string sk = ""; 

      if (accNumber != "") 
      { 
       if (accNumber == dr["account_number"].ToString()) 
       { 
        master.Checked = true; 
       } 
      } 


      for (int i = 0; i <= 1; i++) 
      { 

       TreeNode child = new TreeNode(sk, sk); 
       child.SelectAction = TreeNodeSelectAction.None; 
       child.ShowCheckBox = false; 

       if (accNumber != "") 
       { 
        if (accNumber == dr["account_number"].ToString()) 
        { 
         child.Text = "<input type='radio' checked='checked' id='rad_" + dr["account_number"].ToString() + "' name='rdoC" + redindex.ToString() + "' value ='" + sk + dr["account_number"].ToString() + "_" + dr["account"].ToString() + "_" + dr["office_id"].ToString() + "_" + _customerId.ToString() + "' />" + child.Text; 
        } 

       } 
       else 
       { 


         child.Text = "<input type='radio' id='rad_" + dr["account_number"].ToString() + "' name='rdoC" + redindex.ToString() + "' value ='" + sk + dr["account_number"].ToString() + "_" + dr["account"].ToString() + "_" + dr["office_id"].ToString() + "_" + _customerId.ToString() + "' />" + child.Text; 


       } 



       master.ChildNodes.Add(child); 
      } 
      redindex++; 
     } 
    } 

} 
01碼

問題發生在這裏,當我試圖讓這裏

var sess = System.Web.HttpContext.Current.Session["AccountMoney"].ToString(); 

這裏的會話值我只得到兩個會話值並非所有4.什麼我做錯了什麼?代碼必須太長的時間任何幫助表示讚賞。謝謝

+0

要麼我不理解你的代碼,要麼你的代碼與你描述的問題無關。你的SetSession函數什麼都不做,你的javascript不會發送任何數據。取決於你的setSession看起來像是一個靜態函數的事實可能是問題的根源,但是沒有任何代碼就很難說清楚。 – user5014677

+0

@ user5014677對不相干的code.i得到正確的兩個會話值。只是與其他兩個sir.addsession卡住保存按鈕完成點擊。 – OLDMONK

+0

完成SetSession功能。在您發佈的內容中,將變量AccountMoney設置爲空字符串。並在您的JavaScript數據是{}。你的SetSession是一個靜態方法。因此,根據您實際設置會話的方式,您可能會遇到問題,因爲靜態函數會將值保存在調用之間。但是如果沒有任何實際的代碼,就很難說出你在那裏做了些什麼。 – user5014677

回答

0

我之前遇到過這種情況,搜索讓我無處可去,繼續使用cookies來獲取我想從JS讀取的值。它就像一個魅力!試試吧Get Cookies by name JS

+0

請小心這種方法。與會話不同,cookie可以被用戶看到和操縱。它們的大小也是有限的,並且它們會增加每個請求的開銷。 – Richard

+0

我知道我知道,沒有從JS獲得會話值有相同的漏洞!這就是他要求的。將他的會話價值暴露給clientSide – 2017-08-28 09:59:24