代码改变世界

打造颠覆你想象中的高性能,轻量级的webform框架---js直接调后台(第二天)

2017-07-29 16:50  刘晶  阅读(1084)  评论(2编辑  收藏  举报

 

问题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  中,根据传进来的参数名字不同就可以,执行后台的方法了,例如:

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  传 方法名和参数就可以调用后台的方法,也达到了我们的目的!!

  

这样写 我们不就可以通过 传方法 和参数就可以执行执行后台代码了,如果细心的人会发现,这样写很麻烦,而且每个页面都要这样写,岂不是代码冗余 很严重,而且如果传入多个参数怎么办,岂不是要分割字符串,如何去优化 这里的代码,我会在下期中慢慢去分解 去消化!!!