【发布时间】:2014-04-21 18:48:56
【问题描述】:
我在我的 default.aspx 上执行 foreach 内联时遇到问题,我在后面的代码中创建的集合列表 lst 出现“当前上下文中不存在”错误。我不确定缺少什么。 我可以从后面的代码中看到控件,所以我知道 page_load 正在触发。
我应该在我的设计师身上看到 lst 吗?如果没有正确生成是原因,我不是 100% 肯定的。我添加了一个测试文字并添加了它。我在调试和运行时编译了我的项目。然后我在构建之后也为每个添加了我的内联。
- 命名空间匹配
- Autoevent 设置为 true
- 输入 !Page.IsPostback
我可以遍历 lst 并将值附加到文字并查看通过的值。
感谢您的帮助。
<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/MasterPages/WebSite.master" CodeBehind="Default.aspx.cs" Inherits="Admin._Default" AutoEventWireup="true"%>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
<h2></h2>
<div>
<% foreach (Services service in lst)
{ %>
<% } %>
<asp:Literal ID="ltrl_ServiceList" runat="server" />
</div>
</asp:Content>
背后的代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web.Security;
using System.Web.UI.HtmlControls;
using System.Security.Principal;
using RecycleAdmin.Utilities;
using System.Data.SqlClient;
using System.Reflection;
namespace Admin
{
public partial class _Default : System.Web.UI.Page
{
//Create my properties
protected void Page_Load(object sender, EventArgs e)
{
getListOfClosuresFollowups();
if (!Page.IsPostBack)
{
DataTable dt = getTable();
List<Services> lst = dt.ToCollection<Services>();
foreach (Services service in lst)
{
ltrl_ServiceList.Text += service.service_nm.ToString();
}
}
}
}
【问题讨论】:
-
'lst' 似乎是 Page_Load 中的一个局部变量,而不是页面本身的属性。
-
lst是一个局部变量,您必须将其声明为实例级成员。 -
您使用 for 循环的方法更类似于 Razor 语法,但 ASP.NET Web 窗体使用 Repeater control 来完成同样的事情。