新的ASP.NET Web应用程序:有一个Login按钮可以执行某些操作 - 但是,魔法会在哪里发生?

时间:2011-10-25 19:41:27

标签: asp.net

原谅我对这个问题缺乏一点ASP.NET知识:)

以下是场景:我在VS2010中玩游戏,我创建了一个新的ASP.NET Web Application(在Visual C#下,Web模板)。没什么特别的,只是一个基本的Web应用程序。没有花哨的MVC东西。

模板生成的解决方案中包含一个登录页面; Account/Login.aspx。在该页面上,是一个登录按钮; HTML看起来像这样:

<p class="submitButton">
    <asp:Button ID="LoginButton"
                runat="server"
                CommandName="Login"
                Text="Log In"
                ValidationGroup="LoginUserValidationGroup"/>
</p>

再一次,没什么特别的。现在,背后的代码:

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

public partial class Account_Login : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        RegisterHyperLink.NavigateUrl = "Register.aspx?ReturnUrl=" + HttpUtility.UrlEncode(Request.QueryString["ReturnUrl"]);
    }
}

更不那么花哨。最后,来自web.config:

    <authentication mode="Forms">
        <forms loginUrl="~/Account/Login.aspx" timeout="2880"/>
    </authentication>

所以,这是我无法弄清楚的:当我运行应用程序时,我可以点击登录按钮,应用程序 - 但某些东西的代码在哪里?

来自WPF世界(在ASP.NET中有一些背景),我的第一直觉是在CommandName上进行归零 - 但搜索与“登录”相关的任何内容都会变得干涸。我的第二直觉是查看代码隐藏,但同样,它非常稀疏,我看不到任何与点击登录按钮有关的内容。

那么这个按钮背后的“神奇”在哪里发生?必须有的东西;我觉得我忽略了一些正好坐在我眼前的东西。

5 个答案:

答案 0 :(得分:9)

如果您指的是Visual Studio开箱即用的默认Web应用程序(不是空的),您会注意到登录按钮位于<asp:Login>服务器控件内。这就是魔法发生的地方。如果你查看web.config,它会与ASP.NET成员资格提供程序连接,你会看到对它的引用。

答案 1 :(得分:2)

该页面正在回发。但没有连接事件处理程序,所以它什么都不做。我知道如何通过添加按钮时生成的代码来执行此操作。该按钮生成一些JavaScript代码,调用函数来回发页面。

您需要添加一个事件处理程序。最简单的方法是双击表单设计器上的按钮,它将为您生成代码。

答案 2 :(得分:1)

Button是服务器端控件 - 这会导致它在单击时回发。

如果你查看页面的来源,你会看到一个__dopostback的调用,这是一个将页面发回给自己的javascript函数。

此时,页面重新加载,这可能就是您所看到的。

答案 3 :(得分:1)

没有任何反应(除了回发到服务器),CommandName="Login是您的样板代码。没有OnCommand="CommandBtn_Click"以及code-behind

中的相关事件处理程序,什么都不做

答案 4 :(得分:0)

我觉得你想要源代码。您有兴趣了解提供程序如何执行登录。可以说螺母和螺栓......

http://weblogs.asp.net/scottgu/archive/2006/04/13/442772.aspx