这个事件源于一个偶然,在小编开发一个网页上的类似计算器的网页的时候,出现了问题,就是想要做出来一个扩展键盘的效果,但是用asp.net的控件加上了Jqurey的动态效果之后,没有什么反应,用FireBug单步调试才出现了结果,原来就是因为ASP.net控件是可以向后台发消息的控件,发送消息了之后会刷新界面,所以用Jqurey做的效果就被掩盖了。
一、开始的思路
既然是ASP.NET控件的问题,那么就不用他,改用HTML的控件不就行了吗?然后就开始了漫长的换控件的过程,最后换好了,发现按钮的点击事件全部都不起作用了,原因就是HTML控件的onclick事件是不会触发后台CS文件写的方法的,这就有了一个问题,怎么才能调用后台代码呢,这个时候就引入了JS和AJAX了。
二、AJAX的思路
首先,HTML控件的触发函数只能是JS中的函数,所以我就在页面上写了一个函数来作测试,成功!然后接着拼接Ajax的代码,调用后台写好的方法,结果发现怎么样都是不行的:
$.AJAX({
type:"Post",
url:TempCoast.cs/btn6Fun,
success:function(data){
if(data==true){
alert("成功!");
}
}
})
但是怎么都执行不成功,用FireBug发现到了url那里就显示访问地址错误,或者找不到方法,这是什么问题呢?经过我的观察,网上的例子中的后台方法都是静态的,所以就加了一个静态的方法上去,结果就是成功的,虽然返回的东西不知是什么,但是成功执行了,还是感到很欣慰,可以还有一个问题,就是计算器有20多个键,怎么去写呢,一个一个写吗?况且返回值是不行的,由于后台的静态方法是不能调用前台控件的,所以只能通过AJAX里面的语句再赋值才可以。这样一来结构复杂,逻辑很是乱,所以就否决了这个方法。
三、ASP.NET控件拯救ASP.NET控件
时间到了第二天,又是这个界面,我们查了一下发现ASP.NET控件变化不会随着刷新而刷新,所以,调出的按钮也都用ASP.net的,所以又研究了一下asp.NET中的Menu控件,这样的控件也是ASP.NET的,触发的事件是和HTML有区别的,所以界面就不会变化了,用的JS和AJAX也就被抛弃了。
四、总结
敲了这个前台的东西,才感觉到ASP.ENT的控件是如此的强大,有了后台的支持,前台的功能好实现了很多,但是又有了不美观和不灵活的缺点,但是网上的第三方的ASP.NET的控件也有不少了。所以ASP.ENT是很强大的,但是HTML的灵活性也不能小瞧,所以在界面的设计上我们需要学习的东西还有很多。