2012-03-22 142 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