【问题标题】:How to resolve "'default_aspx' does not contain a definition for 'Button1_Click' " error?如何解决“'default_aspx' 不包含'Button1_Click' 的定义”错误?
【发布时间】:2021-12-16 18:13:09
【问题描述】:

我已经查找了其他问题,但没有一个解决方案适用于这种情况。 我试图删除 Button1_Click 函数并再次添加它,我试图重命名它。 在设计中右键单击并查看代码会将我带到同一个文件,因此文件已正确连接。

有趣的是它以前可以工作。起初我收到错误:'default_aspx' 不包含'TextBox1_TextChange'的定义。我删除了 OnTextChange=TextBox1_TextChange 然后删除了 protected void TextBox1_TextChange(object sender, EventArgs e) {}

我重新编译并开始接收'default_aspx'不包含'Button1_Click'的定义

代码如下:

默认.aspx.cs*

using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace APP_FullStack_C.Sharp_.Net_MSSQL
{
    public partial class _Default : Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            SqlConnection con = new SqlConnection("Data Source=DESKTOP\SQLEXPRESS;Initial Catalog=StudentRecords;Integrated Security=True");
            con.Open();
            // Sql connection string
            SqlCommand comm = new SqlCommand("Insert into dbo.StudentInfo_Tab values('" + int.Parse(TextBox1.Text) + "','" + TextBox2.Text + "','" + DropDownList1.SelectedValue + "','" + double.Parse(TextBox3.Text) + "','" + TextBox4.Text + "')", con);
            comm.ExecuteNonQuery();
            con.Close();
            ScriptManager.RegisterStartupScript(this, this.GetType(), "script", "alert('Successfully Inserted');", true);
            LoadRecord();
        }

        // To show inserted values in the grid view 
        void LoadRecord()
        {
            SqlCommand comm = new SqlCommand("select * from StudentInfo_Tab", con);
            SqlDataAdapter d = new SqlDataAdapter(comm);
            DataTable dt = new DataTable();
            d.Fill(dt);
            GridView1.DataSource = dt;
            GridView1.DataBind();
        }

        
    }
}

默认.aspx*

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="APP_FullStack_C.Sharp_.Net_MSSQL._Default" %>

<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">

    <div>
        <div style="font-size:x-large; height: 51px;" align="center" > Student Info Manage Forms</div>
        <table class="nav-justified">
            <tr>
                <td style="width: 435px">&nbsp;</td>
                <td class="modal-sm" style="width: 186px">Student ID</td>
                <td>
                    <asp:TextBox ID="TextBox1" runat="server" Font-Size="Medium"  ></asp:TextBox>
                </td>
            </tr>
            <tr>
                <td style="width: 435px">&nbsp;</td>
                <td class="modal-sm" style="width: 186px">Student Name</td>
                <td>
                    <asp:TextBox ID="TextBox2" runat="server" Font-Size="Medium" ></asp:TextBox>
                </td>
            </tr>
            <tr>
                <td style="width: 435px">&nbsp;</td>
                <td class="modal-sm" style="width: 186px">Address</td>
                <td>
                    <asp:DropDownList ID="DropDownList1" runat="server">
                    </asp:DropDownList>
                </td>
            </tr>
            <tr>
                <td style="width: 435px">&nbsp;</td>
                <td class="modal-sm" style="width: 186px">Age</td>
                <td>
                    <asp:TextBox ID="TextBox3" runat="server" Font-Size="Medium" ></asp:TextBox>
                </td>
            </tr>
            <tr>
                <td style="width: 435px; height: 20px"></td>
                <td class="modal-sm" style="width: 186px; height: 20px">Contact</td>
                <td style="height: 20px">
                    <asp:TextBox ID="TextBox4" runat="server" Font-Size="Medium"></asp:TextBox>
                </td>
            </tr>
            <tr>
                <td style="width: 435px; height: 20px;"></td>
                <td class="modal-sm" style="width: 186px; height: 20px;"></td>
                <td style="height: 20px"></td>
            </tr>
            <tr>
                <td style="width: 435px">&nbsp;</td>
                <td class="modal-sm" style="width: 186px">&nbsp;</td>
                <td>
                    <asp:Button ID="Button1" runat="server" BackColor="#E1E1E8" Font-Bold="True" ForeColor="Black" OnClick="Button1_Click" Text="Insert" Width="79px" />
                </td>
            </tr>
            <tr>
                <td style="width: 435px">&nbsp;</td>
                <td class="modal-sm" style="width: 186px">&nbsp;</td>
                <td>
                    <asp:GridView ID="GridView1" runat="server" Width="538px">
                    </asp:GridView>
                </td>
            </tr>
        </table>
        <br />
    </div>

</asp:Content>

我对 C# 和 .Net 非常陌生。 任何帮助表示赞赏。提前致谢!

编辑:我认为问题出在反斜杠上。添加了错误的图片。删除反斜杠会删除错误,但当然不能删除它。

【问题讨论】:

  • 在您的代码中,在剃须刀中搜索Button1_Click - 然后尝试找到该委托的实现...
  • 请尝试清理并重建项目
  • 尝试复制出click方法代码,删除该方法,然后双击按钮重新创建事件,然后在代码中重新添加。
  • 感谢@JobesK 的回复。我已经尝试过你的解决方案。我弄清楚了“编辑”中提到的问题是什么。就是不知道怎么解决
  • 按钮问题与该连接字符串没有任何关系。 \(看起来不错)是正确的,因为在 sql server 中,它总是 SERVERNAME\SQLINSTANCE 名称,看起来正确。此外,由于此页面是母版页的子页面,我还将打开站点母版,右键单击,查看代码并检查该代码页的内部。 (怀疑按钮单击是否在 master 中 - 但它是可能的)。

标签: c# asp.net razor


【解决方案1】:

不要使用单个反斜杠,而是使用 2 个反斜杠。改为

数据源=DESKTOP-KJ3D7HA\SQLEXPRESS

来源:https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/compiler-messages/cs1009

非常感谢所有提供帮助的人!

【讨论】:

    【解决方案2】:

    我只想删除按钮点击标记:

     <asp:Button ID="Button1" runat="server"
       BackColor="#E1E1E8" Font-Bold="True" ForeColor="Black" 
       OnClick="Button1_Click" Text="Insert" Width="79px" />
    

    所以,在上面,删除 onclick 事件。 例如;

     <asp:Button ID="Button1" runat="server"
       BackColor="#E1E1E8" Font-Bold="True" ForeColor="Black" 
       Text="Insert" Width="79px" />
    

    此时,错误可能会消失。

    但是,如果没有,那么在上面的页面上右键单击->查看代码。在代码中,找到按钮单击事件的代码存根。注释掉(不要删除)。

    现在试试这个页面。它应该可以工作 - 但当然那个按钮不起作用。

    此时编译错误消失了吗?

    然后在设计器中 - 双击该按钮。它将为您重新创建事件代码。您现在可以将之前注释掉的代码剪切/粘贴/移动到该代码存根中。矮胖子现在应该没问题了,所有国王的男人看起来在这种情况下矮胖子可以修复!

    编辑:=-============================================ ===========

    哦,天哪,再看一次错误消息——它是表单上文本框 1 的事件存根。这个:

        <asp:TextBox ID="TextBox1" runat="server" Font-Size="Medium"  ></asp:TextBox>
               
    

    在后面的代码中,有一个 TextBox1 的代码存根,名为:

    TextBox1_TextChange
    

    所以错误信息实际上是清晰且正确的。进入后面的代码并找到 TextChange 事件。你可以注释掉。现在回到设计器,显示文本框的属性表。

    例如:

    在箭头指向的区域双击。你跳到代码编辑器。它应该将您的光标放在正确的代码存根中。如果它创建了一个新的,则从代码中现有的 Text changed 事件中复制代码。

    我的错,我很抱歉 - 没有仔细阅读该问题,我认为这是一个按钮问题,但它显然是一个文本框更改事件问题。

    除非文本框具有 autopostback=true,否则代码存根不会触发,因此它并不清楚应该发生什么。

    无论如何,寻找文本框 1 的文本更改事件背后的代码。

    【讨论】:

    • 感谢您回复@Albert D. Kallal。你的方法不起作用,但它确实帮助我找到了真正的问题(我认为)。我用问题编辑了问题。基本上,它不喜欢数据源中的反斜杠
    • 您可以为测试删除 \ 并放入一个空格,但您必须将其改回以使连接字符串正确。我怀疑这会导致按钮点击错误消失。
    • 另外,只看错误 - 它是关于文本框,而不是按钮 - 我的错。因此该文本框看起来是错误消息 - 而不是按钮。我的错。找到那个文本框 (TextBox1),然后查看 on-change 事件
    • 查看我的编辑 - 除非您更改了问题,否则错误消息非常清楚 - 后面代码中缺少的事件存根是 textBox1 的 textchanged。
    • 删除 \ 实际上会删除按钮和/或文本框错误。应用程序构建没有任何错误。这与反斜杠有关,因为当我将鼠标悬停在它上面时,它显示的错误和输出中的错误相同,即 CS1009:“无法识别的转义序列”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-19
    • 1970-01-01
    • 2015-03-23
    • 2020-04-27
    • 1970-01-01
    • 1970-01-01
    • 2022-07-06
    相关资源
    最近更新 更多