1

我正在尝试编写一个基本的 ASP.NET 表单(使用 Visual Studio 2010)将数字提交到数据库。因为这是我使用 ASP.NET 的早期尝试,所以我一开始写得很简单,现在我正在尝试添加剩余的功能。最初,一切都是内联代码。现在我正在尝试将其切换为使用代码隐藏页面,但我无法让它从我的代码隐藏文件中解析我的文本框的名称。我在遵循一些教程的同时构建了这些页面,并查看了其他几个资源以尝试解决此问题,但到目前为止我所看到的一切似乎表明我已经为代码隐藏设置了所有内容,但它不起作用。VS 在编译期间给出错误,说明文本框名称在当前上下文中不存在。当我删除对文本框的所有引用时,页面工作并且我的按钮事件触发。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
        }
    }
}
4

8 回答 8

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;
    }
}
于 2012-05-15T17:53:53.417 回答
1

我不时有这个问题。我通常会执行以下操作:

  1. 转到 default.aspx.designer.cs。
  2. 确保命名空间和类名正确。
  3. 删除default_aspx类内的所有内容。
  4. 保存并关闭 default.aspx.designer.cs。
  5. 对 default.aspx 进行更改(添加空格或其他内容)。
  6. 重新编译项目。

这也可能是您的命名约定,尝试更改default_aspxdefault_aspx1. 我见过default_aspx.NET使用过。
此外,在我的 .NET 4.0 中,默认是使用CodeBehind而不是CodeFile. 这似乎是除.NET 1.1之外的所有预期用例。另请参阅CodeFile 与 CodeBehind

如果一切都失败了,请尝试从头开始重新创建页面。

于 2012-05-15T18:23:39.583 回答
0

你的CodeFile="default.aspx.cs"说法是错误的

于 2012-05-15T17:06:41.440 回答
0

它应该是这样的

CodeFile="default_aspx.aspx.cs" Inherits="default_aspx"
于 2012-05-15T17:10:35.383 回答
0

采用

CodeBehind="default.aspx.cs"
于 2012-05-15T17:14:27.087 回答
0

您的 asp 中的代码文件标记必须与类名相同。尝试类似真实的类名。HelloWord.aspx或者其他的东西。

于 2012-05-15T18:10:13.690 回答
0

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

于 2012-05-15T18:14:27.397 回答
0

转到您的 .aspx 文件并重新检查您的标题,如 <%@............%> 应该有一个链接到您的代码后面的文件名,即 .cs 文件,如... ...

签出这个 1....:)

{<%@ Page Language="C#" AutoEventWireup="true" **CodeBehind="Home.aspx.cs"** Inherits="MyCompany.Home" MasterPageFile="~/Site1.Master"%>}
于 2012-12-19T21:52:15.063 回答