完全是n00b的问题,我正在制作我的第一个ASP.NET网站,其中包括使用IUI框架,让iPhone上的东西看起来很漂亮。
默认情况下,我是一名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>
更新:
我认为截图可能会有所帮助。
问题是“whitebutton”似乎是我必须使用的,它不像asp.net服务器端按钮,因此我不能简单地双击以连接click事件。
我尝试了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:style控件用于连接到后端。
答案 0 :(得分:2)
您必须验证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
还阅读了本文关于Validating ASP.NET Server Controls的内容,如果您愿意使用asp.net会员提供商,Use Membership in ASP.NET和Validating 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
}
答案 1 :(得分: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
将返回代表第1个的TextBox
实例<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.
}
类的一部分:
{{1}}