Невозможно общаться с сервером asp.net - PullRequest
0 голосов
/ 22 марта 2012

В целом вопрос n00b, я делаю свой первый веб-сайт ASP.NET, с добавленным поворотом использования инфраструктуры IUI, которая делает вещи приятными на iPhone.

  1. Как подключить белую кнопку, чтобы проверить и подтвердить имя пользователя и пароль в базе данных?
  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>

ОБНОВЛЕНИЕ:

Я думаю, что скриншот может быть полезным.

enter image description here

Проблема в том, что мне нужно использовать «whitebutton», а не кнопку на стороне сервера asp.net, поэтому я не могу просто дважды щелкнуть, чтобы подключить событие click.

Я пробовал метод Шалтай-Дампти, но он вообще не вызывает метод Verify () в моем файле .CS. Я пытался с помощью только onclick = "Login ();" вместо Javascript: Логин (); оба не работают.

ОБНОВЛЕНИЕ 2:

Работает внизу, но как только я заменю Input to Textbox, посмотрим, что произойдет ...

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 использовались для подключения к бэкэнду.

Ответы [ 2 ]

2 голосов
/ 22 марта 2012

Вы должны подтвердить данные пользователя по вашему событию buttonclick.

Если у вас есть поля базы данных в username и password, вы можете создать функцию, которая принимает имя пользователя и пароль и проверяет побаза данных.

например.в своем событии нажатия кнопки вы можете сделать что-то подобное

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
    }
1 голос
/ 22 марта 2012

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 этих серверных элементов управления обычно сопоставляются со свойствами / полями класса Page, поэтому this.Username вернет экземпляр TextBox, представляющий 1-й <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.
}
...