0

完全是 n00b 的问题,我正在制作我的第一个 ASP.NET 网站,并添加了使用 IUI 框架的额外扭曲,这使得 iPhone 上的东西看起来不错。

  1. 如何连接 whitebutton 去验证数据库上的用户和密码?
  2. 如果密码很好,我如何让浏览器转到不同的窗口...
  3. 如何在当前页面上附加“密码不正确”之类的消息?

我默认是 ac# 程序员,完全迷失在这个新领域。请不要,我不能让它似乎不适用于 IUI。

掌握

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.master.cs" Inherits="Cover_Plus.SiteMaster" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head runat="server">
    <title></title>
    <meta name="viewport" id="viewport" content="width=device-width, user-scalable=0, initial-scale=1.0" />
    <link href="iui/iui.css" rel="stylesheet" type="text/css" />
    <link title="default" href="iui/t/default/default-theme.css" rel="stylesheet" type="text/css" />
    <script type="application/x-javascript" src="iui/iui.js"></script>

    <meta name="apple-mobile-web-app-capable" content="yes" />
    <meta name="apple-mobile-web-app-status-bar-style" content="black" />
    <link rel="apple-touch-icon" href="img/touch-icon-iphone.png" />
    <link rel="apple-touch-icon" sizes="72x72" href="img/touch-icon-ipad.png" />
    <link rel="apple-touch-icon" sizes="114x114" href="img/touch-icon-iphone4.png" />
    <link rel="apple-touch-startup-image" href="img/startup.png" />

    <asp:ContentPlaceHolder ID="HeadContent" runat="server"> </asp:ContentPlaceHolder>
</head>
<body>
    <asp:ContentPlaceHolder ID="MainContent" runat="server"/>
</body>
</html>

默认.aspx

<%@ Page Title="Cover Plus" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Cover_Plus._Default" %>

<%--Header--%>
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
    <script type="text/javascript">

    </script>
</asp:Content>

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

<div class="toolbar">
    <h1 id="pageTitle">System Login</h1>
</div>
<div class="panel" selected="true" id="loginPanel"> 

    <h2>Login to Cover Plus</h2>
    <fieldset>
        <div class="row">
            <label>Name</label>
            <input type="text" name="ident" text="hhh" placeholder="Your login" />
        </div>
        <div class="row">
            <label>Password</label>
            <input type="password" name="password" placeholder="Your password" />
        </div>
    </fieldset>

    <form id="Form1" title="Index" name="formname" method="POST">
        <a class="whiteButton" type="submit" href="javascript:formname.submit()">Login me in!</a>
   </form>
</div>


</asp:Content>

更新 :

我认为截图可能会有所帮助。

在此处输入图像描述

问题是“whitebutton”似乎是我必须使用的,它不像asp.net服务器端按钮,因此我不能简单地双击来连接点击事件。

我尝试了 Humpty Dumptys 方法,但它根本没有在我的 .CS 文件中调用 Verify() 方法。我尝试了 onclick="Login();" 而不是 Javascript:Login(); 两者都不起作用。

更新 2:

底部的作品,但只要我将输入替换为文本框,看看会发生什么......

在此处输入图像描述

提前谢谢了

最终解决方案:

<div class="toolbar">
    <h1 id="pageTitle">Login</h1>
</div>

<div id="pnlLogin" class="panel" selected="true" >
    <h2>Login Details</h2>
    <form ID="fLogin" runat="server" class="panel" selected="true" > 
        <fieldset>
            <div class="row">
                <label>Name</label>
                <asp:TextBox id="txtUserName" runat="server" placeholder="Your username" />
            </div>
            <div class="row">
                <label>Password</label>
                <asp:TextBox id="txtPassword" textmode="Password" runat="server" placeholder="Your password" />
            </div>
        </fieldset>
        <asp:LinkButton id="btnLogin" class="whiteButton" text="Log me in!" runat="server" onclick="Login_Clicked" />
    </form> 
</div>

基本上,表单用“class=panel”装饰,asp: 样式控件用于连接到后端。

4

2 回答 2

2

您必须验证您的buttonclick活动的用户详细信息。

如果您有一个数据库字段usernamepassword您可以创建一个接受用户名和密码并验证数据库的函数。

例如。在您的按钮单击事件中,您可以执行类似的操作

var status = verifyUser(username,password);//might return Boolean value 
if(!status)
      somelable.text = "username or password incorrect";
else
     // do something - redirect to some page may be

还可以阅读这篇关于验证 ASP.NET 服务器控件的文章,如果您愿意使用 asp.net 成员资格提供程序,请在 ASP.NET 中使用成员资格针对成员资格用户验证用户凭据


如果使用还是不明白...

修改您的代码类似于此

你的正面

<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
   <fieldset>
        <div class="row">
            <label>Name :</label>            
            <asp:TextBox ID="txbUserName" runat="server"></asp:TextBox>
        </div>
        <div class="row">
            <label>Password :</label>
            <asp:TextBox ID="txbPassword" runat="server"></asp:TextBox>
        </div>
        <div class="row">
            <asp:Button ID="btnLogin" runat="server" Text="Button" CssClass ="whiteButton" 
                onclick="btnLogin_Click" />
            <asp:Label ID="lblError" runat="server" Text="Label"></asp:Label>
        </div>
    </fieldset>

</asp:Content>

你的后端

protected void btnLogin_Click(object sender, EventArgs e)
    {
        var username = txbUserName.Text;
        var password = txbPassword.Text;
        if(!string.IsNullOrEmpty(username) && !string.IsNullOrEmpty(password))
        {
            if(!VerifyUser(username,password))
            {
                lblError.Text = "username or password incorrect";
            }
        }
    }
    // I recommend this function to be in a separate class but for example 
    public static Boolean VerifyUser(string username,string password)
    {
        //
        return true or false
    }
于 2012-03-22T16:35:00.960 回答
1

正如您使用的那样,WebForms 通常具有页面范围的<form runat="server">. 这通常被定义为 MasterPage 的一部分(~/Site.master在您的情况下),通常可以在<body>标记后几行找到。

如果您的站点具有此表单,则与服务器的通信将通过服务器端控件(标有runat="server")进行处理:

<asp:TextBox ID="Username" Text="hhh" runat="server"
    placeholder="Your Login" />

<asp:TextBox ID="Password" TextMode="Password" runat="server"
    placeholder="Your password" />

<asp:LinkButton ID="Login" Text="Login me in!" runat="server"
    CssClass="whitebutton" OnClick="Login_Clicked" />

每个服务器端控件都代表它在呈现期间生成的常规 HTML,因此上面的内容会变成这样:

<input id="ct100_Username" name="ct100$Username" type="text" value="hhh" placeholder="Your Login" />

<input id="ct100_Password" name="ct100$Password" type="password" placeholder="Your password" />

<a id="ct100_Login" class="whitebutton" href="javascript:__doPostBack('ct100$Login','')">Login me in!</a>

(注意:实际的客户端 ID 和名称可能与此处的示例有很大不同。)

这些服务器端控件的ID属性一般映射到Page类的属性/字段,所以this.Username会返回TextBox代表 1st 的实例<asp:TextBox />

使用AutoEventWireup="True",正如您所拥有的,您将定义在 的 中指定的方法OnClick作为<asp:LinkButton />类的一部分Page

protected void Login_Clicked(object sender, EventArgs e)
{
    var user = Username.Text;
    var pass = Password.Text;

    if (ValidateUser(user, pass))
    // etc.
}
于 2012-03-22T16:40:26.653 回答