比如注册新用户的过程中,form里的密码已经经过RequiredFieldValidator验证,但接着需要在客户端用javascript脚本加密该密码,然后再传到服务器上,这个如何处理,本人在提交按钮上加了个onclick属性,调用客户端脚本加密方法,但似乎RequiredFieldValidator验证又不执行,????,还有想将加密后的密码存在一个HiddenField里,但不知道HiddenField控件在哪个命名空间里,在对应cs里声明protected System.Web.UI.WebControls.HiddenField hdnFld;老报HiddenField找不到之类的错,请高手赐教一二!

解决方案 »

  1.   

    谢谢楼上的回复,我的加密脚本在html文件里验证过没问题的,之所以想在客户端加密,就是想密码在传输的过程中就是加了密的。
      

  2.   

    如果你需要对密码输入页面加密,这个页面确保必须使用https协议访问就行了。登录之后,重定向到使用http协议访问的网站首页,同时使用登录时在服务器产生“身份ID”作为url参数。
      

  3.   

    谢谢楼上回复,不想做那么复杂,就想用http传个加密后字符串就行了,难道asp.net实现起来就这么饶吗,在asp里实现起来可是件很轻松的事情呀,我想asp.net解决起来也应该很简单的,不好意思,有个东东本想用asp做,后来还是跟了潮流,临时改用asp.net做,现在是在边学边做,问题多多???谢谢高人指点,祝高人们新年愉快!!
      

  4.   

    只要访问一下http的url地址就能得到“加密”的源代码了,我想asp.net的开发者们大概从来没有想过还要兼容这种“加密”功能而改变校验方法。从你的问题看你大概是使用vs.net2003。使用vs2005根本不用再在后台去手动声明变量。我有两年没用过vs.net2003了,不记得是否有这个控件。你在设计器上是写“<asp:HiddenField runat="server" id=...... />”吗?你贴出设计器上这个东西的源码看看。
      

  5.   

    想要知道类型也很容易,例如下面这样写:<span runat='server' id="myTest">
        <input type="hidden" runat="server" id="myHiddenField" />
        <br />
        类型是:<%=myTest.Controls[0].GetType().FullName %>
    </span>
      

  6.   

    哦,绕到姥姥家去了!直接写:<input type="hidden" runat="server" id="myHiddenField" />
    .........
    类型是:<%=myHiddenField.GetType().FullName %>
      

  7.   

    谢谢楼上高人,本人现在是在用UltraEdit写代码,用csc编译,所以所有的东西都得手工写上去,好多东东不会写,对HiddenField,在aspx里<asp:HiddenField id="hdnFld" runat="server"/>,在cs里声明,如何在cs里声明protected System.Web.UI.WebControls.HiddenField hdnFld,这样就编译不过去,要包含什么命名空间?,还有如何执行完控件验证代码后,再接着执行自己的客户端脚本?望指点!
      

  8.   

    aspx:<asp:HiddenField id="hdnFld" runat="server"/>
    cs:protected System.Web.UI.WebControls.HiddenField hdnFld;
    刚才写的有点乱。
      

  9.   

    问题自己已经搞定。方法如下:
    aspx:
    <input type="hidden" id="hdnPwd" runat="server" />
    <asp:textbox id="pwd" runat="server" Width="133px" TextMode="Password" CssClass="txtfld"></asp:textbox>
    <asp:button id="regBtn" text=" 提 交 " cssclass="Button1" runat=server/> 
    建个js文件,里面2函数
    function getpwd()
    {
    var hdn=document.getElementById('hdnPwd');
    var pwd=document.getElementById('pwd');
    hdn.value=hex_md5(pwd.value);//加密函数在另一个js里
    }function subit()
    {
    var pwd=document.getElementById('pwd');
    if (pwd.value !='')
    getpwd();
    }
    js文件里有如下语句:
    protected System.Web.UI.WebControls.Button regBtn;
    protected System.Web.UI.HtmlControls.HtmlInputHidden hdnPwd;
    protected void Page_Load(object sender, EventArgs e)
    {
    regBtn.Attributes.Add("onclick","subit();");
             //其他处理
    }
    这样在调用页面验证控件前,先调用subit()函数,如果输入了密码,会进行加密,将加密后结果放在hdnPwd里,如果为空,会继续调用验证控件的处理。以前不行是因为在Page_load里是语句regBtn.Attributes.Add("onclick","return subit();");因为return而不能继续执行验证控件的处理了。谢谢参与的朋友,你们的参与给了我部分思路。