【问题标题】:Asp.net click event code appears in aspx page instead of code behindasp.net点击事件代码出现在aspx页面而不是后面的代码
【发布时间】:2014-08-01 09:41:55
【问题描述】:

当我单击一个按钮来定义它的单击事件时,它会将我带到我自己的 aspx 页面的标签,而不是把我带到 /aspx.cs 页面后面的代码。这只发生在主页上。其他页面 signup.aspx 工作正常并且按预期工作。

在过去的几个月里,我的许多项目都发生了这种情况,由于我是初学者,我对此不太了解。但是是的,我在 VS 2010 中创建此网站时勾选了“将代码放在单独的文件中”复选框。

提前感谢您的帮助。

编辑:(添加代码)

<%@ Page Language="C#" 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 id="Head1" runat="server">
            <title>Employee Login</title>
        <link href="css/Style.css" type="text/css" rel="Stylesheet" />
        </head>
        <body>
            <form id="form1" runat="server">
            <div>
                  <table align="center" class="loginBox">
                    <tr>
                        <td>Username:</td>
                        <td><asp:TextBox ID="txtUsername" runat="server" CssClass="username"></asp:TextBox></td>
                        <asp:RequiredFieldValidator runat="server" ID="rqUser" ValidationGroup="loginValidation" ControlToValidate="txtUsername" ErrorMessage="Username"></asp:RequiredFieldValidator>
                    </tr>
                    <tr>
                        <td>Password:</td>
                        <td><asp:TextBox ID="txtPassword" runat="server" TextMode="Password" CssClass="password"></asp:TextBox></td>
                        <asp:RequiredFieldValidator runat="server" ID="rqPass" ValidationGroup="loginValidation" ControlToValidate="txtPassword" ErrorMessage="Password"></asp:RequiredFieldValidator>
                    </tr>
                    <tr>
                        <td align="center" colspan="2"><asp:Button ID="btnLogin" Width="60" runat="server" 
                                Text="Login" CssClass="btnLogin" onclick="btnLogin_Click" /></td>
                    </tr>
                    <tr>
                        <td colspan="2"><span style="float:left;"><asp:HyperLink ID="HyperLink1" runat="server" Text="Forgot Password" NavigateUrl="~/forgotpassword.aspx" CssClass="regular_text"></asp:HyperLink></span>
                                        <span style="float:right;"><asp:HyperLink ID="HyperLink2" runat="server" Text="New User" NavigateUrl="~/signup.aspx" CssClass="regular_text"></asp:HyperLink></span>        
                        </td>
                    </tr>
                    <asp:ValidationSummary ID="ValidationSummary1" runat="server" HeaderText="You must enter following" DisplayMode="BulletList" EnableClientScript="true" ForeColor="White" />
                </table>
            </div>
            </form>
        </body>
        </html>


    Code behind:

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

    public partial class Default2 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }
    }

【问题讨论】:

  • 您仍然可以在脚本标签内的 aspx 文件中包含代码。
  • @BabuJames 是的,我可以拥有它。实际上就是这样,aspx页面的script标签中出现了code behind,而其他页面确实有自己的cs页面,只有主页代码出现在同一页面中可能是VS的问题?
  • 您是否在某个时候更改了公共部分类的名称或命名空间? (在您的 aspx.cs 文件中)
  • 那么,您是说当您在 VS2010 的设计视图中双击一个按钮时,您不会被带到带有预定义函数来处理按钮的单击事件的代码后面?
  • @RynoCoetzee 未做任何更改。

标签: c# asp.net visual-studio-2010 code-behind


【解决方案1】:

查看 .aspx 文件的标题。应该有一个名为 CodeBehind 的属性引用您的代码文件。像

CodeBehind="yourfile.aspx.cs"

如果此属性不存在,则 C# 代码将放置在您的 aspx 中的脚本标记内。如果此属性存在,则引用带有代码的 cs 文件。可能,当您创建文件时,您没有勾选“将代码放在单独的文件中”(或类似的)复选框。

如果您想将代码放在单独的文件夹中,您可以使用代码创建一个新的 aspx.cs 文件(最好从解决方案中的其他文件复制和粘贴),并添加引用该文件的属性 CodeBegind。

【讨论】:

    【解决方案2】:

    在您的 .aspx 页面的顶部 - 您会看到这样一行代码(或类似的代码):

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="default.aspx.cs"
    Inherits="yourapp.default"%>
    

    CodeBehind 属性链接到 .aspx(asp 标记/设计器)页面的 .CS 文件(C# 代码文件)

    Inhertis 属性链接到该 .CS 文件的“namespace.partial”类

    .CS 文件应如下所示:

    ...
    using System.Data.SqlClient;
    using System.Net;
    
    namespace yourapp
    {
        public partial class Default : System.Web.UI.Page
        {
    
    ...
    

    如果您的 ASPX 文件中没有上述属性 - 添加它们

    如果您的 C# 代码隐藏文件中没有命名空间指令 - 添加它 (当然使用您为项目提供的名称(检查您的其他文件的外观))并将所有内容封装在命名空间下(即在命名空间子句下的每一个周围添加 {})

    【讨论】:

    • 谢谢大家,我似乎不知何故错过了代码隐藏属性。不知道我是怎么错过的,因为同一站点的其他页面在此主页上没有此属性。再次感谢
    • 很高兴 - 请标记为已回答任何人的回答使您得出结论
    【解决方案3】:

    如果它是一个 HTML 控件,单击事件将通过双击在 aspx 页面中定义。如果它是一个asp控件,点击事件将在代码页中通过双击来定义。

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="YourCodePage.aspx.cs"
        Inherits="Default2" %>
    

    【讨论】:

    • 这是一个asp控件——一个asp按钮。
    • 好的。检查您定义CodeFile="YourCodePage.cs" 的aspx 页面的最顶部。这与您的页面代码同名吗?
    • 感谢您。该页面根本没有代码隐藏属性。这会导致问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-30
    • 1970-01-01
    • 2013-08-25
    • 2011-07-02
    • 1970-01-01
    相关资源
    最近更新 更多