名称<;控件名称>;在当前上下文内联中不存在

本文关键字:上下文 不存在 gt 控件 lt 名称 | 更新日期: 2023-09-27 17:59:17

我在default.aspx上执行foreach内联时遇到问题,并且在代码隐藏中创建的集合列表lst出现"当前上下文中不存在"错误。我不确定少了什么。我可以从后面的代码中看到控件,所以我知道page_load正在启动。

我应该在我的设计师身上看到lst吗?如果它没有正确生成是原因,我不是100%肯定。我添加了一个测试文字,它被添加了。我在调试和运行时都编译了我的项目。然后,我在构建之后也为每个添加了内联。

  • 命名空间匹配
  • Autoevent设置为true
  • 放进去!第I页Postback

我可以循环遍历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的本地变量,但服务器标记如何知道它的存在???

至少,您需要将其声明为protected类字段或属性,并且页面的标记部分可以访问它:

class .... 
{
    protected List<Services> lst;
}

顺便说一句,很遗憾你需要在那里做一个for循环:看看Repeater控件。

与这里的其他答案/注释一样,我同意您需要定义您的变量。我可以补充的是,它的值存储在页面的视图状态中。这甚至可以与母版页结合使用,以在多个内容页上安全地持久化变量。我是一名VB.net程序员,但这里有一些MSDN代码示例,或者单击此处获取更多信息。

要在视图状态中存储属性:

public String Text
        {
            get 
            { 
                object o = ViewState["Text"]; 
                return (o == null)? String.Empty : (string)o;
            }
            set
            {
                ViewState["Text"] = value;
            }
        }

这里是我发现的另一个有用的链接:MSDN如何:在视图状态中保存值