Codebehind文件的上下文中不存在ASP文本框

时间:2012-05-15 17:01:49

标签: c# asp.net code-behind

我正在尝试编写一个基本的ASP.NET表单(使用Visual Studio 2010)来向数据库提交数字。因为这是我使用ASP.NET的一个非常早期的尝试,我一开始就非常简单地编写它,现在我正在尝试添加其余的功能。最初,一切都是内联代码。现在我试图将其切换为使用代码隐藏页面,但我无法从我的代码隐藏文件中解析我的文本框的名称。我在遵循一些教程的同时构建了这些页面,并且已经查看了其他几个来源以尝试解决这个问题,但到目前为止我看到的所有内容似乎都表明我已将其全部设置为代码隐藏,但它不起作用。 VS在编译期间出错,说明当前上下文中不存在文本框名称。当我删除对文本框的所有引用时,页面工作,我的按钮事件触发。对于grin,我在代码隐藏中添加了对文本框的引用,就像protected TextBox XcoordTextbox;一样(我相信你会在ASP.NET 1.0中),但后来我得到了一个运行时错误CS0102: The type 'ManualEntry.default_aspx' already contains a definition for 'XcoordTextbox' 以下是我的代码的重要部分。你能帮忙解释为什么这不起作用吗?

ASPX文件

<%@ Page    Language="C#" CodeFile="default.aspx.cs" Inherits="ManualEntry.default_aspx" AutoEventWireup="true" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server"></head>
<body>
    <form id="HtmlForm" runat="server">
        <div>
            X Coord&nbsp;
            <asp:TextBox ID="XcoordTextbox" runat="server"></asp:TextBox>
            <br />
            Y Coord&nbsp;
            <asp:TextBox ID="YcoordTextbox" runat="server"></asp:TextBox>
            <asp:Button ID="SubmitButton" runat="server" onclick="SubmitButton_Click" Text="Submit" />
        </div>
    </form>
</body>
</html>

代码隐藏文件

using System;
using System.Web.UI;

namespace ManualEntry
{
    public partial class default_aspx : Page
    {
        protected void SubmitButton_Click(object sender, EventArgs e)
        {
            var Xcoord = XcoordTextbox.Text;
            var Ycoord = YcoordTextbox.Text;
            //More Code Here
        }
    }
}

8 个答案:

答案 0 :(得分:1)

转到Microsfot.NET[.NET version]\Temporary ASP.NET Files.并删除您网站的临时文件。

例如.net 4.0

C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files

如果使用CodeFile指令,则编译的文件将转到Temporary ASP.NET Files

还可以从解决方案中删除bin和object文件夹,然后重建Web应用程序。

修改

你的default.aspx.designer.cs应该如下所示,不要手动向这个页面添加控件。

//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated. 
// </auto-generated>
//------------------------------------------------------------------------------

namespace ManualEntry {


    public partial class default_aspx {

        /// <summary>
        /// Head1 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.HtmlHead Head1;

        /// <summary>
        /// HtmlForm 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 HtmlForm;

        /// <summary>
        /// XcoordTextbox 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.TextBox XcoordTextbox;

        /// <summary>
        /// YcoordTextbox 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.TextBox YcoordTextbox;

        /// <summary>
        /// SubmitButton 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.Button SubmitButton;
    }
}

答案 1 :(得分:1)

我经常遇到这个问题。 我经常做跟随:

  1. 转到default.aspx.designer.cs。
  2. 确保命名空间和类名正确无误。
  3. 删除default_aspx课程内的所有内容。
  4. 保存并关闭default.aspx.designer.cs。
  5. 对default.aspx进行更改(添加空格或其他内容)。
  6. 重新编译项目。
  7. 它也可能是您的命名惯例,请尝试将default_aspx更改为default_aspx1。我见过.NET使用default_aspx 此外,在我的.NET 4.0中,默认使用CodeBehind而不是CodeFile。除了.NET 1.1之外,这似乎是所有用户的预期用例。另请参阅CodeFile vs CodeBehind

    如果其他所有方法都失败了,请尝试从头开始重新创建页面。

答案 2 :(得分:0)

您的CodeFile="default.aspx.cs"声明错误

答案 3 :(得分:0)

应该是

CodeFile="default_aspx.aspx.cs" Inherits="default_aspx"

答案 4 :(得分:0)

使用

CodeBehind="default.aspx.cs"

答案 5 :(得分:0)

您的asp中的codefile标记必须与类名相同。尝试类似真正的类名。 HelloWord.aspx或其他。

答案 6 :(得分:0)

尝试将您的继承更改为Inherits="ManualEntry.default"而不是Inherits="ManualEntry.default_aspx"

答案 7 :(得分:0)

转到.aspx文件并重新检查您的标题,例如&lt;%@ ............%&gt; 应该有一个指向文件名后面的代码的链接,它是.cs文件,如......

结帐1 ...:)

{<%@ Page Language="C#" AutoEventWireup="true" **CodeBehind="Home.aspx.cs"** Inherits="MyCompany.Home" MasterPageFile="~/Site1.Master"%>}