【问题标题】:How to get list of objects from session in javascript ASP.NET?如何从 javascript ASP.NET 中的会话中获取对象列表?
【发布时间】:2017-01-28 10:07:26
【问题描述】:

我已经从复选框列表中动态创建了复选框,并且我将此列表保存到会话中,并希望在复选框的 onChange 事件中从会话中获取此复选框列表。 这是代码。

    public static List <CheckBox> chklist = new List <CheckBox> ();
    void arrinit() {
        for (int i = 0; i < 31; i++) {
            //initializing list of checkboxes
            chklist.Add(new CheckBox());
        }
    }
    void show() {
        for (int i = 0; i < 30; i++) {
            TableCell cell4 = new TableCell();
            tRow.Cells.Add(cell4);
            ((IParserAccessor) cell4).AddParsedSubObject(chklist[i]);
            chklist[i].ID = "cbx_" + i.ToString();
            string a = "processChechBox('" + "ctl00_ContentPlaceHolder1_" + chklist[i].ID + "'); return false;";
            chklist[i].Attributes.Add("onChange", a);
            chklist[i].Attributes.Add("runat", "server");
        }
        Session["chk"] = chklist;
    }

    function processChechBox(id) {
        //here is the javascript function for checkbox onChange event
        debugger;
        var containerRef = document.getElementById(id);
        var data = document.getElementById(id);
        data.value = '1';
        data.checked = true;
        var a = '<%= Session["chk"]%>';
    }

var a = '&lt;%= Session["chk"]%&gt;'; 此行返回 System.Collections.Generic.List1[System.CheckBox] 而不是列表 processChechBox(id) 每次选中复选框时都会调用此函数。

【问题讨论】:

    标签: javascript c# asp.net checkbox asp.net-session


    【解决方案1】:

    这一行

    <%= Session["chk"]%>
    

    会写出相当于

    Session["chk"].ToString()
    

    这显然不是你想要的。用这里使用的 'var a' 做什么?

    我猜你真的想要这样的东西

    <% var serializer = new System.Web.Script.Serialization.JavaScriptSerializer(); %>
    var jsVariable = <%= serializer.Serialize(((List<CheckBox>)Session["chk"]).ToArray()) %>;
    

    归功于:Pass C# ASP.NET array to Javascript array

    【讨论】:

    • 我复制并粘贴了您的代码,它给了我异常:{“调用的目标已引发异常。”} 内部异常是:{“此操作需要 IIS 集成管道模式."}
    • 如果您将应用程序池更改为使用应该消失的集成,不知道为什么需要它。
    【解决方案2】:

    尝试以下方法并检查控制台日志中的内容。

    function processChechBox(id) {
    //here is the javascript function for checkbox onChange event
    debugger;
    
    var containerRef = document.getElementById(id);
    var data = document.getElementById(id);
    data.value = '1';
    data.checked = true;
    
    var list = <%= new JavaScriptSerializer().Serialize(Session["chk"]) %>;
    console.log(list);
    

    }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-09
      • 1970-01-01
      • 2021-06-16
      • 2023-01-09
      • 2014-08-05
      • 2017-05-04
      • 2019-12-04
      相关资源
      最近更新 更多