首页 文章

无法与asp.net服务器交谈

提问于
浏览
0

总的来说n00b问题,我正在制作我的第一个ASP.NET网站,其中增加了使用IUI框架,使得iPhone上的东西看起来很漂亮 .

  • How do I hookup the whitebutton to go and verify the user and password on the database?

  • How do I make the brower go to a different window if the password was good else...

  • How do I append a message like "password incorrect" on the current page?

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

Master

<%@ 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

提前谢谢了

Final Solution :

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

Basically the form was decorated with "class=panel" and the asp: style controls were used to connect to the backend.

2 回答

  • 1

    您必须验证 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


    如果使用仍然不明白......

    修改你的代码类似于此

    your fronted

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

    Your Backend

    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
        }
    
  • 2

    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 = “您的登录”/>

    <input id =“ct100_Password”name =“ct100 $ Password”type =“password”placeholder =“您的密码”/>

    <a id="ct100_Login" class="whitebutton" href="javascript:__doPostBack('ct100$Login','')">登录我!</a>
    (注意:实际的客户端ID和名称可能与此处的示例有很大不同 . )

    这些服务器端控件的 ID 属性通常映射到 Page 类的属性/字段,因此 this.Username 将返回表示第一个 <asp:TextBox />TextBox 实例 .

    使用 AutoEventWireup="True" ,就像你拥有的那样,然后定义_277618__的 OnClick 中指定的方法作为 Page 类的一部分:

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

相关问题