JavaScript 从视图状态获取自定义对象

JavaScript getting custom object from viewstate

我很确定这个问题以前有人问过,但我找不到它,所以请 post link 到我可以去的地方..

但是,我使用 ViewState 在 asp.net 中的回发中保留了一些数据。 ViewState 包含我自己的自定义对象的集合。例如

 ViewState["List"] as List<Animal>

是否可以获取此列表并将其传递给客户端?所以真的,它可以连载吗?

我试过:

// HTML
<asp:TextBox ID="theList" runat="server" style="display:none"></asp:TextBox> 

 //Sever Side
theList.Text = ViewState["List"].Tostring();

//JS
document.getElementById('theList').innerText;

当然,这不是我的数据,它包含命名空间。

我的第一个想法是在客户端上使用 JSON.Parse,但是我需要先传递数据,这是主要问题。

谢谢

好的,我只是在服务器端使用了 JavaScriptSerializer

 var serializer = new JavaScriptSerializer();
 var serializedResult = serializer.Serialize(ViewState["List"]);

然后将其转移到隐藏字段

hiddenField.Value = serializedResult; 

现在所有数据在客户端上都是JSON格式,然后如果你愿意,你可以反序列化它

user3428422 说得对(he/she 打败了我 post)。您也可以考虑:

    public List<Animal> AnimalList
    {
        get
        {
            if (!(ViewState["lAnimalList"] is List<Animal>))
            {
                ViewState["lAnimalList"] = new List<Animal>();
            }
            return (List<Animal>)ViewState["lAnimalList"];
        }
    }

然后在您的 Page_Load 活动中有:

        JavaScriptSerializer jss = new JavaScriptSerializer();
        HiddenField.Value = jss.Serialize(AnimalList);

虽然是同一个想法。你应该首先奖励user3428422。