【问题标题】:control does not exist in the current context in master page母版页的当前上下文中不存在控件
【发布时间】:2023-04-04 18:51:01
【问题描述】:

我在 asp.net 中有一个 web 项目 我有一个母版页,其中包含一个名为lkBtnUserFullName 的链接按钮,但我无法在Masterpage.master.cs 中的Page_Load 中访问此控件 当我手动访问这个控件时,会报错:

名称 lkBtnUserFullName 在当前上下文中不存在

我该如何解决这个问题?

更新:

我的代码:

<asp:LinkButton ToolTip="Please Click Here!" 
 ID="lkBtnUserFullName" PostBackUrl="~/admins/profile.aspx" 
  runat="server">Majid Basirati</asp:LinkButton></span>

Page_LoadMasterPage.master.cs 中:

lkBtnUserFullName.Text = Session["fullname"].ToString();

【问题讨论】:

  • 您是否将runat="server" 添加到链接按钮?
  • 您确定控件是否存在于母版页上,通过查看错误,您似乎已删除该控件或它可能具有不同的 id
  • &lt;asp:LinkButton ID="lkBtnUserFullName" runat="server"&gt;LinkButton&lt;/asp:LinkButton&gt; 。这是正确的代码。如果不起作用,请发布您的代码。
  • @rs。是的,这个控件有runat="server"
  • @MajidBasirati 你能发布你的 aspx 标记吗?

标签: asp.net master-pages


【解决方案1】:

在解决方案资源管理器中右键单击您的母版页文件并选择转换为 Web 应用程序,它将为您重新生成 .designer 文件,您将再次能够访问所有母版页服务器控件从后面的代码

【讨论】:

  • 我在右键菜单中没有找到转换为Web应用程序
  • 这是一个网站还是一个网络应用程序?
  • 是的,这是一个 Web 应用程序。
  • 能否请您发布您的母版页的完整 .aspx 代码?我想看看 lkBtnUserFullName 在设计器中的确切位置
  • .aspx 标记似乎有效,您能否尝试从项目中删除母版页并重新创建它?
【解决方案2】:

这看起来像是 Visual Studio 与设计器问题同步。我有过几次。通常我会尝试以下操作:

从您的 aspx 中删除 Designer.cs 文件中不存在的所有服务器控件(不同步的控件)。然后删除后面的代码以成功构建,保存所有内容并重新启动您的 Visual Studio。

再试一次,应该可以了。

【讨论】:

  • 谢谢亲爱的。设计师.cs在哪里?我在解决方案资源管理器中找不到。通知我的问题在 MasterPage 中
  • 你有母版页。它包含 3 个文件:aspx、cs 和 Designer.cs。设计器文件由 Visual Studio 自动生成,但通常不应编辑它。虽然有时它与 aspx 文件不能很好地同步,这就是为什么你必须执行这样的步骤。
  • 好的。但你没有告诉我:designer.cs 文件在哪里。我在解决方案资源管理器中找不到。
  • 我不知道您的母版页名称是什么。让它成为 Default.Master。在解决方案资源管理器中找到您 Default.Master 并展开它。您将在其下看到 2 个相关文件。那些将是 Default.Master.cs 和 Default.Master.designer.cs
  • 但是我没有看到Master下的designer.cs。我只有 Master.cs
【解决方案3】:

在当前母版页中自己新建一个 Default.Designer.cs 文件,像这样创建一个分部类。

public partial class Site_Master {

    /// <summary>
    /// form1 control.
    /// </summary>
    /// <remarks>
    /// Auto-generated field.
    /// To modify move field declaration from designer file to code-behind file.
    /// </remarks>
    protected global::System.Web.UI.HtmlControls.HtmlForm form1;

    /// <summary>
    /// ContentPlaceHolder1 control.
    /// </summary>
    /// <remarks>
    /// Auto-generated field.
    /// To modify move field declaration from designer file to code-behind file.
    /// </remarks>
    /// 
    protected global::System.Web.UI.WebControls.Label lblName;

    /// <summary>
    /// btnSearchEmp control.
    /// </summary>
    /// <remarks>
    /// Auto-generated field.
    /// To modify move field declaration from designer file to code-behind file.
    /// </remarks>
    /// 

    protected global::System.Web.UI.WebControls.Label lblBranch;

    /// <summary>
    /// btnSearchEmp control.
    /// </summary>
    /// <remarks>
    /// Auto-generated field.
    /// To modify move field declaration from designer file to code-behind file.
    /// </remarks>
    protected global::System.Web.UI.WebControls.ContentPlaceHolder ContentPlaceHolder1;
}

并在您的主 aspx 文件中添加此行 Inherits="Site_Master" 是您创建的类名。那么您将能够访问 .cs 文件中的控件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多