问题2: 每次与后台打交道 都需要写一些自己都看不太懂的事件,而且传参数很麻烦,这就是.net 封装的事件,如何解决呢?
首先不要以为写webfrom事件,都需要通过 服务器控件来绑定后台的事件,其实说白了绑定的事件其实都是form表单提交,而且还都是id为form1的表单提交。
如果你不知道这些,那么你为了调用前台的方法, 还要写onclientclick ,如果 美工做出来的效果的是 一个 div 或者 一个span ,滑动的时候,点击的时候,滚动的时候,都想与 后台进行交互,而且还要在 任务没有完成时实现进度条 ,完成后进度条消失,一般人的想法是使用 ajax,写过ajax的人都知道写ajax很麻烦,而且代码可读性,维护性,扩展性都不好,为什么我们可以自己写js 方法直接调用后台呢?
说了这么多废话,其实我想说的 ,我们需要 创造一个 js 的方法 goHouTai(方法名,参数), 然后直接就能执行后台代码,并且自动的将 参数传到后台,并且将直接执行后台的代码,请问有这种方法吗?,.net 不是自带的,但是我们可以自己写啊!!!!!
首先来看实现的思路,我们是否可以这样封装方法呢?
1.在页面放置 2个 隐藏控件,一个隐藏控件用来存方法名,一个隐藏控件用来存 参数 ,例如
<asp:HiddenField runat="server" ID="fangfa"/>
<asp:HiddenField runat="server" ID="canshu"/>
2.然后使用jquery 模拟表单提交 ,将方法名 ,参数放入隐藏控件中,然后执行表单提交,例如:
function submitForm(fangfa,canshu)
{
$("#fangfa").val(fangfa);
$("#canshu").val(canshu);
$("#form1").submit();
}
3. 后台在 Page_Load 中,根据传进来的参数名字不同就可以,执行后台的方法了,例如:
class="brush:csharp;gutter:false;">protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { } else { switch (fangfa.Value) { case "test": test(canshu.Value); break; } } }
4.然后我们来调用我们的方法:
<input type="button" value="test" onclick="submitForm('test','aaaaaaa')"/>
测试下能否执行(测试通过)
注意事项: 我们需要将所有的 控件在 form1 的表单中
这样写我们基本就解决了 直接通过 js 传 方法名和参数就可以调用后台的方法,也达到了我们的目的!!
这样写 我们不就可以通过 传方法 和参数就可以执行执行后台代码了,如果细心的人会发现,这样写很麻烦,而且每个页面都要这样写,岂不是代码冗余 很严重,而且如果传入多个参数怎么办,岂不是要分割字符串,如何去优化 这里的代码,我会在下期中慢慢去分解 去消化!!!