我想在页面加载时初始化字典,然后在foreach循环中访问此字典值。我首先初始化字典,然后将其对象提供给视图状态以在 HTML 中访问,但面临错误。
页面加载:
protected void Page_Load(object sender, EventArgs e)
{
Dictionary<object, object> mydictionary = new Dictionary<object, object>();
mydictionary["name"] = "Faizan";
mydictionary["age"] = 10;
ViewState["Data"] = mydictionary;
//Session["FirstName"] = name;
}
Aspx:
<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Faizan._Default" %>
<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">
<table>
<% foreach (KeyValuePair<object, object> pair in ViewState["Data"]) { %>
<tr><td><%= myItem.title %></td></tr>
<% } %>
</table>
</asp:Content>
像这样Dictionary<object, object
>ViewState
<table>
<% foreach (KeyValuePair<object, object> pair in ViewState["w"] as Dictionary<object, object>)
{ %>
<tr>
<td><%= pair.Key %> = <%=pair.Value%></td>
</tr>
<% } %>
</table>
您使用"w"键添加到ViewState对象,但使用"Data"键检索。
此外,ViewState 旨在存储页面请求周期的数据 - 您无需直接添加到视图状态,您可以在代码隐藏中创建受公共 pr 保护的属性,并在循环中使用它。
或者,您也可以使用转发器,它将自动在 ViewState 中添加项目,以便将它们保留在回发周期中。