string[] Infos=new string[3]; public Array show2DcodeMsg(string id) { SqlConnection connection = new SqlConnection(strCon); String str = "SELECT ZCCCode,ZCCAddr,OfUserName FROM tbZCCInfo WHERE ZCCCode=" + id; SqlCommand command = new SqlCommand(str, connection); command.Connection.Open(); command.ExecuteNonQuery(); SqlDataReader datareader = command.ExecuteReader(); while(datareader.Read()) { string ZCCCode = datareader["ZCCCode"].ToString(); string ZCCAddr = datareader["ZCCAddr"].ToString(); string OfUserName = datareader["OfUserName"].ToString(); Infos[0] = ZCCCode; Infos[1] = ZCCAddr; Infos[2] = OfUserName; } return Infos }
我做的是http请求,参数获得是需要在page_load函数中提取,然后调用上面这个函数,大概后台代码是这样的:
protected void Page_Load(object sender, EventArgs e) { q_id = Request.QueryString["ID"]; if (q_id == null || q_id == "") { return; } { show2DcodeMsg(q_id); } }前台的网页需要用到上面获取的Infos[]的值,这里一般都知道要在前台调用后台方法了,方法有ajax和jquery等,最简单的就是<%=方法名%>这种方式了,但是这里问题来了,是要<%=Page_Load(object sender, EventArgs e)%> ?这显然不合适,从参数上来说也能这么传,再说也没有调用Page_load这一说,怎么办呢?我是直接另写了三个方法:
public string returncode() { return Infos[0]; } public string returnAddr() { return Infos[1]; } public string returnName() { return Infos[2]; }这样在前台直接调用这三个方法不就行了。前台代码如下:
<script type="text/javascript" language="javascript"> var code="<%=returncode() %>"; var addr="<%=returnAddr() %>"; var name="<%=returnName() %>"; function showInfos() { // var img123=doucumen.getElementById("imgCar"); // img123.src="images/"+code+".jpg"; imgCar.src="images/"+code+".jpg"; li_num.innerHTML=code; li_addr.innerHTML=addr; li1.innerHTML=name; } </script>方法showInfos()是在body的onload里执行。执行结果就是,运行网页,发送请求,查询数据库,返回的字段值直接显示在网页的控件上。
后面还用到一个asp:Button的一个onclick事件,往服务器里上传数据,asp是服务其空间,只能直接调用后台cs方法,这个比较简单,直接就能调,问题来了:
前台: <asp:Button ID = "testBtn" Text = "评价" runat = "server" onclick="submit"/> 后台: protected void submit(object sender, EventArgs e) { ... }
(1)前台方法名没有括号
(2)后台方法有参数,并且就这样,我也不知道原因
一开始我前台加括号,后台没参数,感觉太正常不过了,结果报错了
submit 重载均与委托system.eventHandler不匹配。重载出问题自然就想到参数的问题了,但是不加括号不知道为什么,记住吧。