我仍然是一个相对的菜鸟,但是我对我所做的一个小测试的结果感到惊讶。
我想在视图状态中存储一个字符串列表。迄今为止,当我想修改列表时,我从 viewstate 中检索了它,执行了 List.Add 并将其保存回 viewstate。
但是,我随后决定做一个简单的测试,如下所示:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
List<string> s = new List<string>();
s.Add("abc");
s.Add("def");
ViewState.Add("test", s);
s.Add("one");
s.Add("two");
}
var t = (List<string>)ViewState["test"];
foreach (var str in t)
{
Response.Write(str + "<br>");
}
}
如您所见,我创建了一个列表,将其添加到 viewstate,然后修改该列表。令我惊讶的是,即使在回发之后,列表也会在 viewstate 中进行修改。
问题是,这样做是否安全,如果是,是否被认为是不好的做法。
提前致谢。