【问题标题】:ASP.net - Name does not exist in the current contextASP.net - 当前上下文中不存在名称
【发布时间】:2018-10-15 21:10:23
【问题描述】:
public partial class Site : System.Web.UI.MasterPage
{
    //page load event
    protected void Page_Load(object sender, EventArgs e)
    {
        //displaying current date on the label
        lblDate.Text = DateTime.Now.ToString();
    }
}

site.master 我有:

<header>
<h2>Two Column Layout.</h2>
<br />
<div id="displayDate">
<asp:Label runat="server" ID="lblDate" />
</div>

这里是 .master 文件顶部的代码:

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.master.cs" Inherits="MillerDylanTwoColumn.site" %>

我得到的错误是:

错误 CS0103 当前上下文中不存在名称“lblDate”

谁能告诉我哪里出错了?

【问题讨论】:

  • 您能否分享位于 .master 文件顶部的母版页指令的代码?
  • 确保您的 Masterpage 设计文件已注册 lblDate 属性 - 它将 .MasterPage 文件上的标签绑定到代码隐藏类。还要确保您的代码隐藏文件在 MasterPage html 文件的顶部正确注册。
  • 尝试删除标签,保存,关闭visual studio,然后重新打开并重新添加
  • 这是 .master 文件顶部的代码:

标签: c# asp.net master-pages


【解决方案1】:

试试这个:

protected void Page_Load(object sender, EventArgs e){
        Label lblDate = (Label) Master.FindControl("lblDate");

        lblDate.Text = DateTime.Now.ToString();
    }

更新:

然后将此命名空间添加到您的部分:

using System.Web.UI.WebControls;

【讨论】:

  • 嘿。我试过了,现在我得到: 错误 CS0246 找不到类型或命名空间名称“标签”(您是否缺少 using 指令或程序集引用?)错误 CS0246 找不到类型或命名空间名称“标签”(是您缺少 using 指令或程序集引用?)
  • 嗨,所以现在我有这个错误:错误 CS0116 命名空间不能直接包含使用此代码的字段或方法等成员:{ protected void Page_Load(object sender, EventArgs e) { var lbl = sender作为标签; lbl.Text = DateTime.Now.ToString(); } }
【解决方案2】:

我认为在这种情况下,在标签加载事件时初始化文本会更容易,而不是在页面加载中找到控件实例。

protected void lblDate_Load(object sender, EventArgs e)
{
    var lbl = sender as Label;
    lbl.Text = DateTime.Now.ToString();
}

顺便说一句,如果你需要时间,不仅仅是约会。您可能需要计时器或类似的东西来更新标签。

【讨论】:

  • 嘿,这些更新仍然出现错误:错误 CS0116 命名空间不能直接包含字段或方法等成员 错误 CS0103 当前上下文中不存在名称“Master”
  • 我使用了上面贴的那个,然后它只是给我这个错误:错误CS0116 A namespace cannot directly contain members such as fields or methods
  • CS0116 通常是因为你不小心在类之外找到了一个字段或方法
【解决方案3】:

很抱歉在这里回答,因为我无法发表评论。但是您是否需要稍后更改标签值,或者它只是一次加载?如果这是一次性交易,你可以做,如果你需要让它生效,你可以把它放在一个带有刷新计时器的更新面板中。 &lt;asp:Label runat="server" ID="lblDate" Text='&lt;%# DateTime.Now.ToString() %&gt;' /&gt;

【讨论】:

    【解决方案4】:

    仔细检查文件Site.master.designer.cs 是否包含在项目中。否则Site.master.cs 将无法找到组件。

    干杯!

    【讨论】:

      【解决方案5】:

      我在构建我的项目时收到一堆这样的错误消息,无缘无故。

      不知何故,designer.cs 文件没有被刷新。

      我通过重新保存文件并再次重建来修复。

      我的一个 Designer.cs 文件也指向了错误的 UpdatePanel。

      更改自:

      protected global::System.Web.UI.WebControls.UpdatePanel MainUpdatePanel;
      

      收件人:

      protected global::System.Web.UI.UpdatePanel MainUpdatePanel;
      

      【讨论】:

        【解决方案6】:

        我知道这是一个很老的问题,但这确实浪费了我的时间。

        最后我公司项目的最后一位程序员为出现问题的页面制作了几个副本。

        "文件名 - 复制.aspx",

        "文件名 - 复制.aspx.cs",

        “复制 - 文件名.aspx”

        和“复制 - 文件名.aspx.cs”。

        把它们全部删除,问题就解决了。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-03-30
          • 1970-01-01
          • 1970-01-01
          • 2013-10-02
          • 2014-04-22
          • 2017-06-17
          相关资源
          最近更新 更多