BingWay原创作品,转载请注明作者和出处。
最近做了一个小东西,用于WinForm应用程序获取网站的用户登录信息(包括用户名、密码、角色),是一款Web网站辅助管理的小应用程序。
1
<
script type
=
"
text/javascript
"
>
2 function GetData()//用此方法,会弹出“缺少对象”错误
3 {
4
5 var username = document.getElementById( " txtuname " ).value ;
6 var password = document.getElementById( " txtpwd " ).value ;
7 var ddlrole = document.getElementById( " ddlRole " ); // 得到DropdownListid
8 var role = ddlrole.options[ddlrole.selectedIndex].text ; // 得到选中文本值
9 return [username,password,role];
10 }
11 < / script>
2 function GetData()//用此方法,会弹出“缺少对象”错误
3 {
4
5 var username = document.getElementById( " txtuname " ).value ;
6 var password = document.getElementById( " txtpwd " ).value ;
7 var ddlrole = document.getElementById( " ddlRole " ); // 得到DropdownListid
8 var role = ddlrole.options[ddlrole.selectedIndex].text ; // 得到选中文本值
9 return [username,password,role];
10 }
11 < / script>
本想用上面的脚本,此脚本在浏览器中运行一切正常,能得到值,但是跑到WinForm应用程序中,一直报“缺少对象”错误。调试再三未果的情况下,得出一个经典的结论,那就是传说中的人品问题。后来,查出原因,发现是“document.getElementById("txtuname").value”跑到应用程序中就报“缺少对象错误。
//
登录页面
Parameters.username = txtuname.Text; // 点击登陆时,赋值
Parameters.pwd = txtpwd.Text;
Parameters.role = ddlRole.SelectedValue;
Parameters.username = txtuname.Text; // 点击登陆时,赋值
Parameters.pwd = txtpwd.Text;
Parameters.role = ddlRole.SelectedValue;
//后台代码
public
string
username
=
Parameters.username;
//
静态全局变量传值
public string password = Parameters.pwd;
public string role = Parameters.role;
public string password = Parameters.pwd;
public string role = Parameters.role;
//
调用后台数据
< script type = " text/javascript " >
function GetData()
{
var username = " <%= username %> " ;
var password = " <%= password %> " ;
var role = " <%=role%> " ;
return [username,password,role];
}
< / script>
< script type = " text/javascript " >
function GetData()
{
var username = " <%= username %> " ;
var password = " <%= password %> " ;
var role = " <%=role%> " ;
return [username,password,role];
}
< / script>
应用程序中,对脚本的调用:
object
[] Data
=
webBrowser1.Document.InvokeScript(
"
GetData
"
);
//
获取脚本数据
foreach ( string info in Data ){
info = info + " , " ; // 循环取值
}
string [] arr = info.Split( char .Parse( " , " ));
Parameters.username = arr[ 0 ].ToString(); // 得到登录输入用户名
Parameters.pwd = arr[ 1 ].ToString(); // 得到登录输入密码
Parameters.role = arr[ 2 ].ToString(); // 得到登录选择角色
foreach ( string info in Data ){
info = info + " , " ; // 循环取值
}
string [] arr = info.Split( char .Parse( " , " ));
Parameters.username = arr[ 0 ].ToString(); // 得到登录输入用户名
Parameters.pwd = arr[ 1 ].ToString(); // 得到登录输入密码
Parameters.role = arr[ 2 ].ToString(); // 得到登录选择角色
以上是我的方法,如果大家有更好的方法,还请不吝赐教!