2012-03-22 141 views
0

完全没问题,我正在做我的第一个ASP.NET网站,并增加了使用IUI框架的功能,使得iPhone在外观上看起来不错。无法与聊天室服务器

  1. 如何连接whitebutton去验证数据库上的用户和密码?
  2. 我如何让布劳尔去一个不同的窗口,如果密码被别人好...
  3. 如何在当前页面上添加如“密码不正确”的消息?

我是一个默认的c#程序员,完全失去了这个新的领域。请不要让我无法做出它似乎不适用于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> 

Default.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> 

UPDATE:

我觉得截图可能会有所帮助。

enter image description here

的问题是,“whitebutton”似乎是我有什么用,它不是像一个asp.net服务器端的按钮,所以我不能简单地双击来装click事件。

我尝试了Humpty Dumptys方法,但它并没有在我的.CS文件中调用Verify()方法。我试着用onclick =“Login();”代替Javascript:Login();都不工作。

更新2:

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

enter image description here

很多感谢

最终解决方案:

<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:style控件用于连接到后端。

+0

你想验证对数据库中的用户? ?你是否使用asp.net会员提供商? – 2012-03-22 16:27:03

+0

嗨,是的,我是,数据库是在服务器上,我可以处理所有的罚款,我只是不知道如何来回从客户端到服务器,并从服务器访问用户名和密码。 – sprocket12 2012-03-22 16:30:20

+0

你读过http://www.asp.net/web-forms上的教程吗? – jrummell 2012-03-22 16:43:33

回答

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将返回一个表示第一<asp:TextBox />TextBox实例。

随着AutoEventWireup="True",你有,那么您需要定义是在<asp:LinkButton />OnClick指定为Page类的一部分方法:

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

    if (ValidateUser(user, pass)) 
    // etc. 
} 
+0

当我添加一个到页面时,它会把整个事情弄得一团糟,就像每个IUI教程我使用“whitebutton”代码。 – sprocket12 2012-03-22 17:18:47

+0

@MuhammadA你可以在按钮上用'CssClass'属性 - 'CssClass =“whitebutton”'来设置它。但是,您可能还想特别使用'',这将作为''而不是''发送到浏览器。 – 2012-03-22 17:30:04

+0

@MuhammadA另外,请确保“〜/ Site.master”MasterPage中没有定义

“。如果是这样,在当前页面中(如“更新2”所示)会是多余的,可能会中断 - HTML规范不支持表单中的表单,WebForms也不是为此设计的。 – 2012-03-22 17:47:07

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 

也有这篇文章读约Validating ASP.NET Server Controls,如果你愿意使用asp.net成员资格提供Use Membership in ASP.NETValidating User Credentials Against the Membership User


如果使用仍不明白...

修改你的代码类似这样的东西

您的主音

<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 
    } 
+0

我是否把这个代码插入页面顶部的脚本部分? verifyUser()应该在后端的cs文件中? – sprocket12 2012-03-22 16:36:58

+0

如果你创建一个单独的类来访问数据,你可以创建你的** validateuser **,并且你可以在你的后端调用它,那就更好了 – 2012-03-22 16:40:02