代码隐藏页无法"see" aspx 页中声明的任何项/控件



这是我的Default.aspx页面(删除了不必要的详细信息):

    <asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    <div id="login">
    <!-- a bunch of markup has been removed, so this html will appear wrong and not valid, but it actually is -->
    <table align="center" width="80%" cellpadding="0" cellspacing="0" class="loginBg">
        <tr>
            <td colspan="2"><img src="images/Login_top.jpg" /></td>
        </tr>
        <asp:Panel runat="server" ID="pnlLoginIn">
        <tr>
            <td style="padding-left:20px;">Username</td>
            <td style="padding-right:15px;" align="right"><asp:TextBox id="txtUsername" runat="server" /></td>
            <asp:RequiredFieldValidator runat="server" ID="rfvUserName" ErrorMessage="*" ControlToValidate="txtUsername" ValidationGroup="credentials" Display="Dynamic" />
        </tr>
        <tr>
            <td style="padding-left:20px;">Password</td>
            <td style="padding-right:15px;" align="right"><asp:TextBox ID="txtPassword" TextMode="Password" runat="server" /></td>
                <asp:RequiredFieldValidator runat="server" ID="rfvPassword" ErrorMessage="*" ControlToValidate="txtPassword" ValidationGroup="credentials" Display="Dynamic" />
        </tr>
        <!-- BUT THE PANEL IS HERE?! -->
        <asp:Panel ID="pnlInvalidCredentials" runat="server">
        <tr>
            <td colspan="2" align="center" style="color: Red;"><asp:Literal runat="server" ID="litInvalidCredentials" Text="Invalid Username or Password" />
            </td>
        </tr>
        </asp:Panel>
<!-- more code has been removed down here...I just left the block commented in where the pnlInvalidCredential lives -->
    </asp:Content>

下面是代码(删除了不必要的细节):

namespace webapp
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            (webapp.MasterPages.MasterPage)Page.Master).headerImage = "default";
            this.Master.headerImage = "default";
            if (!Page.IsPostBack)
            {
                this.pnlInvalidCredentials.Visible = false; // error is here
                this.BindPressRoomItem();
            }
        }
    }
}

这个页面/代码隐藏是顶级的,它不是任何文件夹或任何东西。此外,此项目是一个ASP.NET Web应用程序,它正在借用旧版Web站点项目的代码。我没有向任何文件"添加现有文件",所有文件都是"添加新文件"以防止兼容性问题。试过了,没用。

在后面的代码中,每次试图操作aspx页面中声明的项都会导致如下错误:

"_Default"不包含"pnlInvalidCredentials"的定义

此上下文中不存在名称"txtUsername"。

由于我刷新了这个页面,您已经删除了html文件顶部带有page指令的行,但看起来可能需要包含名称空间。

尝试:

Inherits="webapp.Default"而不是Inherits="_Default"

尝试将Default.aspx页面中的"CodeBehind"属性更改为"CodeFile"。

如果这是一个web应用程序,有时会发生*.designer.cs文件没有使用您的最新更改进行更新的情况。

试试这个:

  • 拆下面板(只需切开)
  • 保存
  • 撤消
  • 再次保存(这将重新生成*.designer.cs文件)
  • 重建

编辑:

重新生成*.designer.cs文件失败的其他可能性是语法错误,例如aspx页面中缺少结束标记。

我刚刚遇到了同样的问题。为我修复的是:

  • 在我的代码隐藏文件中,该类被定义为"Public class"。将其更改为"分部类",然后单击"转换为Web应用程序"重新生成了"设计器"文件并修复了问题

相关内容

最新更新