webForm的password问题

生活真美好 2004-03-13 05:25:43
问题:
1、html部分c_UserPass已设置内容,但显示页面时为空,怎么解决。
2、CS部分,c_UserPass1不可用,如何解决。
能否详细说明,谢谢各位。

html部分
<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="WebApplication1.WebForm1" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>WebForm1</title>
<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
<meta content="C#" name="CODE_LANGUAGE">
<meta content="JavaScript" name="vs_defaultClientScript">
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<TABLE id="Table2" cellSpacing="2" cellPadding="2" width="100%" border="2">
<tr>
<td align="right" width="120">用户名称:</td>
<td align="left" width="120"><asp:textbox id="c_UserName" runat="server" Width="100px" ToolTip="请输入myname" MaxLength="20">myname</asp:textbox></td>
<td align="right" width="120">用户密码:</td>
<td align="left" width="120"><asp:textbox id="c_UserPass" runat="server" Width="100px" ToolTip="请输入mypass" MaxLength="20"
TextMode="Password">mypass</asp:textbox></td>
<td align="left" width="120"><INPUT id="c_UserPass1" type="password" value="mypass1"></td>
<td style="COLOR: #0066ff" vAlign="middle" align="center"><asp:button id="c_UserEnter" runat="server" Text="用户登录"></asp:button></td>
</tr>
</TABLE>
</form>
</body>
</HTML>


CS部分
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace WebApplication1
{
/// <summary>
/// WebForm1 的摘要说明。
/// </summary>
public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.TextBox c_UserName;
protected System.Web.UI.WebControls.TextBox c_UserPass;
protected System.Web.UI.WebControls.Button c_UserEnter;

private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
}

#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.c_UserEnter.Click += new System.EventHandler(this.c_UserEnter_Click);
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion

private void c_UserEnter_Click(object sender, System.EventArgs e)
{
if (c_UserPass1.Text.Trim() == "")
{
Response.Write ("<script>alert(\"请输入用户名称和密码! (不允许为空)\")</script>");
}
}
}
}
...全文
88 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
生活真美好 2004-03-16
  • 打赏
  • 举报
回复
to tavor(龙双公子),再次感谢。
生活真美好 2004-03-16
  • 打赏
  • 举报
回复
谢谢,看来确实有此问题。因为需要允许换人,即可输入其它人员和密码,只能重新输入密码了。
生活真美好 2004-03-15
  • 打赏
  • 举报
回复
up
tavor 2004-03-15
  • 打赏
  • 举报
回复
呵呵,最终还是又想出来一种方法,
在html代码文件的head标记中添加一段javascript,如下:
<script language="javascript">
function setPass()
{
document.getElementById("passTextBox").innerText="mypass";
}</script>
上面中的passTextBox为一个asp:textbox且为passmode的textbox的ID,mypass是要设的密码

然后在body中添加onload="setPass()",如下:
<body MS_POSITIONING="GridLayout" onload="setPass()">

这样就万事大吉了!555....7点半了,不能再耽误了,我要去自习,我的包还在自习室呢。

如果还有疑问,请发信到我的信箱。jasn.hofy@163.com

tavor 2004-03-15
  • 打赏
  • 举报
回复
首先我用服务控件的textbox,把它设成passmode,可是你在客户端看到的确实是空,而且无论是看源代码还是页面,估计是微软对passmode的textbox作了处理后才发到客户端了。

无奈!只得用普通的passwordfield,可是虽然微软说兼容asp,可是我用
string pass=Request.Form.Get("mypass");//mypass为passwordfield控件。得到的确实为空,这让我也很郁闷,不得再用以下方法测试。

我在用户点提交按纽的处理事件中用以下代码来查看所有提交的数据,如下:

int loop1, loop2;
System.Collections.Specialized.NameValueCollection coll;

// Load Header collection into NameValueCollection object.
coll=Request.Params;
// Put the names of all keys into a string array.
String[] arr1 = coll.AllKeys;
for (loop1 = 0; loop1<arr1.Length; loop1++)
{
Response.Write("Key: " + arr1[loop1] + "<br>");
// Get all values under this key.
String[] arr2=coll.GetValues(arr1[loop1]);
for (loop2 = 0; loop2<arr2.Length; loop2++)
{
Response.Write("Value " + loop2 + ": " + arr2[loop2] + "<br>");
}
}
里面确实没有mypass这个控件的值,可见微软对server控件和client控件作了严格的区分,不让client控件来进行数据提交。
没办法,再试一下把这个password field控件转化为server控件,然后在客户端浏览,查看源文件代码,发现又为空,哭,我也没想到什么好办法了。

只得用下面的方法来模拟了,(汗,没办法啊,)
1.这里用password field控件,不转化为服务器端控件。设置其初值为58801353.
2.然后提交的时候不用获取密码值在,服务端用默认密码直接查询。

缺点:不能用其它密码提交。

换一个方法:
呵呵,在旁边设置一个链接,就是测试用户直接登陆的链接。其它的地方还用从前的服务端控件。

再有好的方法没,就只能敬听高手高论了。
生活真美好 2004-03-14
  • 打赏
  • 举报
回复
tavor(龙双公子),谢谢你多次答复。

我在下句中加入myPassTxt时,情况与上述相同,仍然为必须重新输入口令。
<asp:textbox id="PassTxt" runat="server" Width="152px" TextMode="Password">myPassTxt</asp:textbox>
生活真美好 2004-03-14
  • 打赏
  • 举报
回复
不好意思,估计是我没把问题描述清楚
1.textbox的runat="server" TextMode="Password"属性我知道,谢谢各位提醒。
2.我想问的是,我做了一个演示版软件,进入网站后,直接给出演示用户的名称和密码,用户不用输入任何数据,直接点击登录即可进入,但网页上的Password控件的默认值mypass现为无内容状态,在c_UserEnter_Click(object sender, System.EventArgs e)中,if (c_UserPass.Text.Trim() == "")判断语句为真,
<asp:textbox id="c_UserPass" runat="server" Width="100px" ToolTip="请输入mypass" MaxLength="20" TextMode="Password">mypass</asp:textbox>

请问如何解决。
Password控件中,用户重新输入口令mypass时是正确的。

3.我在列语句中加入的mypass也不起作用
private void Page_Load(object sender, System.EventArgs e)
{
if(!Page.IsPostBack)
{
c_UserPass.Text = "mypass";
}
}

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧