在ASP.NET中单击按钮时运行的代码在哪里

时间:2014-05-02 13:22:31

标签: asp.net .net visual-studio-2010 button

我正在尝试通过使用Visual Studio 2010分析默认Web站点项目来学习ASP.NET的基本方面。

在Register.aspx页面中有用于用户注册的字段和此按钮:

<asp:Button ID="CreateUserButton" runat="server" CommandName="MoveNext"
    Text="Create User" ValidationGroup="RegisterUserValidationGroup"/>

该按钮确实注册了一个用户,但我找不到运行的代码片段,更不用说代码与该按钮的关联方式了。我已经尝试在解决方案中搜索所有标识符关键字,但没有发现任何相关内容。在网上搜索提到了我也找不到的Button.OnClick方法。

有关ASP.NET基本方面的任何信息都会对我有所帮助;提前谢谢。

编辑:按层次结构,按钮位于内部:

<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
    <asp:CreateUserWizard ID="RegisterUser" runat="server" EnableViewState="false" OnCreatedUser="RegisterUser_CreatedUser">
        <WizardSteps>
            <asp:CreateUserWizardStep ID="RegisterUserWizardStep" runat="server">
                <ContentTemplate>
                    <div class="accountInfo">
                        <p class="submitButton">

后面的代码上有一个RegisterUser_CreatedUser方法,它确实:

protected void RegisterUser_CreatedUser(object sender, EventArgs e)
{
    FormsAuthentication.SetAuthCookie(RegisterUser.UserName, false /* createPersistentCookie */);

    string continueUrl = RegisterUser.ContinueDestinationPageUrl;
    if (String.IsNullOrEmpty(continueUrl))
    {
        continueUrl = "~/";
    }
    Response.Redirect(continueUrl);
}

我期待在数据库上插入某种用户数据。我想知道,这就是按钮的作用吗?

3 个答案:

答案 0 :(得分:1)

您正在查看的按钮应位于CreateUserWizardStep控件中。我对这个控件知之甚少,但可能会控制查找具有CommandName = "MoveNext"的子按钮,然后它会挂钩它的click事件。

尝试将CommandName更改为其他类似“test”的内容,它不应该点击RegisterUser_CreatedUser事件的断点。

另请注意,CreatedUser&lt; - 事件告诉用户已创建,现在其余代码只是对同一用户进行身份验证。在此之后,用户已经创建并保存在数据库中。

如果你也查看web.config,你会发现这个ConnectionString

<connectionStrings>
    <add name="ApplicationServices"
     connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true"
     providerName="System.Data.SqlClient" />
</connectionStrings>

由于您使用的是Visual Studio的默认Web应用程序项目,因此Visual Studio已经为您完成了所有这些工作。

答案 1 :(得分:0)

aspx页面也会有一个“代码隐藏”文件,其名称相同,但扩展名不同(点后面的字母),这取决于它所写的语言。可视基本文件的扩展名为.vb,而C#文件有.cs扩展名。

尝试查找Register.vb或Register.cs,看看它是否更有成效。

如果您正在使用像Visual Studio这样的开发环境,您可能会发现在解决方案资源管理器中,您可以单击以展开aspx文件,并在其下方查看其后面的代码。如果你不是,你可能想要获得免费快递版的副本:

http://www.visualstudio.com/en-US/products/visual-studio-express-vs

当您找到代码隐藏时,查找名为“MoveNext”的方法 - 这是您单击按钮时运行的代码,由asp:Tag的CommandName属性指定。

答案 2 :(得分:0)

你复杂了几件事,你完​​全没有错,但部分是VS 2010 IDE附带的项目模板。让我试着一个一个地帮助你:

  1. 学习ASP.Net的基础知识:为此,您应该使用Visual Studio 2010中的“ASP.NET空Web应用程序”项目模板。您已经开始使用“ASP。 NET Web Application“项目模板,它复杂的东西 您。重新开始“ASP.NET Web应用程序”看起来对任何人来说都是显而易见的选择,但它带有一个预煮的锅炉板代码,用于ASP.NET成员身份验证及其相关控件,这是造成所有混淆的根本原因。要开始使用基础知识,请参阅上面建议的“ASP.NET空Web应用程序”项目模板,然后添加一个新的“Web窗体”,然后添加各种基本服务器Web控件,如按钮或文本框,以开始使用概念喜欢事件处理和代码背后的东西。

  2. 您的其他问题 -

      

    “该按钮确实注册了一个用户,但我找不到这段代码   运行,甚至更少的代码与该按钮“

    相关联

    这是因为您在Register.aspx页面上看到的按钮是 不是单个服务器Web控件,而是复合控件asp:CreateUserWizard的一部分。各种控件的所有事件都是按钮,标签或文本框,它们是asp:CreateUserWizard复合控件的一部分,由父复合控件asp:CreateUserWizard处理。您将无法在代码隐藏文件中找到所有代码,因为它存在于项目中引用的System.Web.dll中。

    由于复合控件上存在的所有控件事件都是由复合控件代码内部编写的通用函数处理的,因此必须准确区分用户单击的控件(采取适当的操作),这会导致当前页面回复CommandName属性进入图片。在使用CommandName属性的父组合控件的公共函数中有一个switch case语句。

  3. 基本上发生的事情就是当你试图开始理解ASP.Net服务器web控件和事件处理的基础时,你实际上已经深入了解了ASP.Net Membership&amp; amp;角色Web服务器控件&amp;最初可能比较难理解和掌握的提供者。希望这有助于您开始并进一步了解ASP.Net世界。