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。
我很确定这个问题以前有人问过,但我找不到它,所以请 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。