一个Default.aspx页面,一个runat=server 的Form,form中有两个input输入域:txtUserName和txtPassword,实现用户的登录认证,并且txtUserName和txtPassWord可能取自其它页面的提交.在后台的Page_load事件中实现两个功能:
1、PostBack状态下,取txtUserName和txtPassWord的值到后台数据库进行比较验证。2、非PostBack状态下,判断txtUserName和txtPassWord的值是否为空,如果不为空,触发form的提交,使用其执行PostBack状态下的代码完成验证。我现在就是不知道如果在代码中实现FORM的提交???请教了!!!
1、PostBack状态下,取txtUserName和txtPassWord的值到后台数据库进行比较验证。2、非PostBack状态下,判断txtUserName和txtPassWord的值是否为空,如果不为空,触发form的提交,使用其执行PostBack状态下的代码完成验证。我现在就是不知道如果在代码中实现FORM的提交???请教了!!!
加一个Button的服务器端事件不可以吗?
里面获得用户名,密码。然后访问数据库核实即可。
-------------------
2、非PostBack状态下,判断txtUserName和txtPassWord的值是否为空,如果不为空,触发form的提交,使用其执行PostBack状态下的代码完成验证。那用JS实现可以吧,客户端判断用户名和密码是否为空。若为空则不向服务器端提交数据嘛。
<script>
function checkForm()
{
if (TxtName.value=="")
{
alert("请输入用户名");
return false
}
if (TxtPass.value=="")
{
alert("请输入密码");
return false
}
return true;
}
</script>
<form id="Form1" method="post" runat="server">
<TR>
<TD>名称</TD>
<TD>
<asp:TextBox id="TxtName" runat="server"></asp:TextBox></TD>
<TD></TD>
</TR>
<TR>
<TD>日期</TD>
<TD>
<asp:TextBox id="TxtPass" runat="server"></asp:TextBox></TD>
<TD></TD>
</TR>
<asp:Button id="BtnSure" runat="server" Text="保存"></asp:Button>
</form>-------------
aspx.cs文件中
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if (!IsPostBack)
{
BtnSure.Attributes.Add("onclick","return checkForm();");
}
}
private void BtnSure_Click(object sender, System.EventArgs e)
{
string strName = TxtName.Text;
string strPass = TxtPass.Text;
...........//访问数据库是否是合法的用户。
}我没测试,楼主参考。
private sub Page_load(Byval sender as object,byval e as eventargs)
if not ispostback then
if txtusername.text="" or txtuserpass.text="" then
response.write("<script>alert('密码不能为空");</script>")
else
''验证
end if
end if
end sub
这样就可以了啊。
==================================================================
这个想法值得考虑,不知有没有办法在代码中实现form提交?
字符串变量=txtUserName.value.toSring();
字符串变量=txtPassWord.value.toSring();
else if(txtUserName.value=="" && txtPassWord.value=="")
提交事件
<script>
function checkForm()
{
if (Form1.TxtName.value=="")
{
alert("请输入用户名");
return false
}
if (Form1.TxtPass.value=="")
{
alert("请输入密码");
return false
}
return true;
}
</script>
--------------
hackate(兰花开香入梦境,独思佳人亦飘然!!)
if not ispostback then
if txtusername.text="" or txtuserpass.text="" then
response.write("<script>alert('密码不能为空");</script>")
else
''验证
end if
end sub
////////////////
//是不是刚打开页面的时候就判断用户名是否为空?用户提交按钮的时候就不触发判断用户名是否为空了????这样好象有问题吧?
C#里面是isPostback 少写了个=号。成了付值了。你会调试啦!嘿嘿!
--------------------------
........我感觉这里麻烦的,其它页面传递的话你如何传递过来????
传统的ASP的换是Request("TxtName")的,但在ASP.NET中,这个也可以用,但
-------------------------
触发Form的提交
若是在本页的话,是使用Button的(submit类型),若来自其它页。感觉麻烦了。。
<asp:TextBox id="txtUserName" runat="server"/>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1"
ControlToValidate="txtUserName"
Text="请输入姓名!"
runat="server"/>
<asp:Button id="btn" onclick="xx" runat="server"/>在<script>里
protected void xx(){
if(Page.IsValid)
{
//验证
}
}
这样如果不输入姓名是提交不上的
---------------
嘿嘿~~``大虾糊涂了,难得啊~~~`
如果来自本页应该用客户端验证,vld就可以验证。如果来自其他页面可能其他页面没验证,楼主还是要在pageload里来区别是不是这个意思,实际你就对其他页面数据在pageload验证,就可以了,是空就返回本页
private void Page_load( object sender, eventargs e)
{
if (!isPostBack){
if (txtusername.text="" or txtuserpass.text="")
{
response.write("<script>alert('用户名或密码密码不能为空");</script>")
}
}
} 这样就回到本页面了
不知我说明白了没有?我现在唯一不知道的就是在来自其它页面提交的情况下,怎样在后台代码中自动触发Form的提交事件。
{
if(frmDefault.txtUserName.value=="" || frmDefault.txtPassWord.value=="")
{
frmDefault.txtUserName.focus();
}
else
{
frmDefault.submit();
}
}
两种方法都可以。不过现在越来越多的验证都不会在客户端写js,因为不安全;
============================================================
哦,那怎样在后台的代码页中触发前台aspx页面中form的提交?
以下我是利用 window.open() 新开窗体,即去除了 IE 工具栏,又绕过了“上网助手”等广告拦截工具的阻挠。
一、登录页面(Login.aspx)
<INPUT type="submit" onclick="LoginSys()" value="登录" id="B_Login" name="B_Login">
function LoginSys()
{
window.open('ValidWeb.aspx','tmp','top=0,left=0,height=560,width=800,scrollbars=no,toolbar=no,location=no,menubar=no,resizable=no,status=no')
}二、验证页面(ValidWeb.aspx)一张空白页面(把按钮隐藏起来)
<INPUT type="hidden" id="Hn_LginName" runat="server"><INPUT type="hidden" id="Hn_Password" runat="server">
<asp:Button id="B_Login" runat="server" Text="验证"></asp:Button>function GetValue()
{
var op = window.opener;
if(op == null){self.close();return;}
document.getElementById("Hn_LginName").value =op.document.getElementById("TX_UserName").value;
document.getElementById("Hn_Password").value = op.document.getElementById("TX_Password").value;
document.getElementById("B_Login").click();//触发点击按钮事件
}ValidWeb.cs 中
if(!IsPostBack){this.B_Login.Style["display"]="none";}//把按钮隐藏起来
private void B_Login_Click(object sender, System.EventArgs e)
{
if(…………) //通过验证
{
Response.Redirect("../Default.aspx");
}
Response.Write("<script language='javascript'>alert('用户名或密码错误!');self.close();</script>");
Response.End();
}这里要注意的是如果是用 Form 认证,那么“ValidWeb.aspx”则必须放在任何人都能访问的目录依你的需求,你可以换种思路
只要用 js 执行登录按钮的 click() ,实质上就是实现了该按钮的提交
有很多种方法可以实现的.
比如在页面中放一个hidden,然后在服务端先判断,需要自动提交页面的时候,就向此hidden写值1,否则 写0,然后页面加载完毕,在页面的底部写一个函数,让它自动执行,在函数里面判断此hidden的值,如果为1,那么自动点击提交按钮(当然你可以将此按钮做样式让它隐藏style="display:none"):document.all("button1").click();这样它就提交了.
再比如,你可直接在服务端输出脚本来点击按钮进行提交.if(需要提交页面)
(
string mystr = "<script>document.all('button1').click();</script>";
if(!this.IsClientScriptBlockRegistered("aaa"))
{
this.RegisterStartupScript("aaa",mystr);
}
)
如此,当需要提交页面时,自然会输出脚本,待页面加载完毕,即自动点击提交按钮