打造顛覆你想象中的高效能,輕量級的webform架構---js直接調背景封裝(第三天)

來源:互聯網
上載者:User

標籤:拼接   迴圈   gen   斷點   nts   arguments   test   break   blog   

      如果你沒有看我第二天寫的內容的,我想你是看不懂的!!!!

      好了,廢話不多說,怎麼才能讓我們的代碼變得牛逼起來呢?怎麼封裝我們的代碼呢?我們不可能 每個頁面都需要那樣寫吧,那我們來一步一步來封裝 我們的代碼,變得更牛逼,維護性更高!!!!!

      首先我們來分析,我昨天寫的代碼:

          第一步:在介面寫入2個隱藏控制項,用來存放方法名和參數  (親們,你們不可能每個頁面都去寫吧!!!當然不行,那怎麼辦)

   我們是這樣實現的,通過jquery在頁面每次在頁面載入完成後,判斷控制項是否存在,不存在在就寫入,存在就不作任何操作!!

$(function () {                      if ($("#hid_fangfa").length < 1)            {                $("#form1").children().eq(0).after(‘<input type="hidden"  name="hid_fangfa" id="hid_fangfa" />‘);            }            if ($("#hid_canshu").length < 1) {                $("#form1").children().eq(0).after(‘<input type="hidden"  name="hid_canshu" id="hid_canshu" />‘);            }                  });

 第二步:js寫一個參數(方法名),就可以動態拼接參數,將動態參數放入隱藏控制項中,然後執行表單提交(感覺js沒有學好,好難實現!!!!!)

       這裡我們要用到arguments 的 動態參數!!!(這裡處理 方法名字不拼接之外的其他參數都要拼接 ,我們這用  ‘|’來拼接的)

  function gohoutai(fangfa) {                       var canshu = ‘‘;            for (var i = 0; i < arguments.length; i++) {                if (typeof (arguments[i]) == ‘object‘)                {                    continue;                }                if (i != 0&&i==1)                {                    canshu = canshu + arguments[i].toString();                }                if ( i > 1)                {                    canshu = canshu +"|"+ arguments[i].toString();                }            }                $("#hid_fangfa").val(fangfa);            $("#hid_canshu").val(canshu);            $("#form1").attr("target", "_self");  //這裡表示指向 的 form1 預設提交的頁面            $("#form1").submit();        } 

第三步: 後台通過  隱藏控制項中的 方法名字不同去執行不同的方法(難道一定要迴圈判斷隱藏控制項的值才能執行不同的方法嗎?難道要使用傳說的反射!!!!)

     親們,你們說對了,這裡唯有反射才能實現前台動態調用背景不同的方法。   

    背景代碼需要公用,就必須要繼承 一個類,這個類叫父類,我們這裡建了一個類 Base,還需要繼承System.Web.UI.Page,

   首先我們通過Request 的方式擷取 隱藏控制項的值,然後通過方法名字,參數的個數 去找到該頁面的所有的方法,然後執行這個方法!

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;  //需要引用反射
using System.Web;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;

public class Base:System.Web.UI.Page    {              protected override void OnInit(EventArgs e)        {                       if (Page.IsPostBack)            {                string fangfa = this.Request["hid_fangfa"] == null ? "" : this.Request["hid_fangfa"].ToString();                string canshu = this.Request["hid_canshu"] == null ? "" : this.Request["hid_canshu"].ToString();
MethodInfo method=null; MethodInfo[] methods=this.GetType().GetMethods(); for (int i = 0; i < methods.Length; i++) { if (methods[i].Name == fangfa && methods[i].GetParameters().Length == canshu.Split(‘|‘).Length) { method = methods[i]; break; } } if (method != null) { string[] strs = canshu.Split(‘|‘); method.Invoke(this, strs); } } } }

第四步:  首先要引入 我們剛才寫的js,同時後台需要public partial class test1 : Base    ,繼承我們寫的公用類

讓我們我們在前台動態調用方法吧!!

   前台  :   <input type="button" value="2個參數" onclick="gohoutai(‘gogo‘, ‘我是好人‘,‘222‘);" />

        <input type="button" value="1個參數" onclick="gohoutai(‘gogo‘,‘222‘);" />

後台 : 

public void gogo(string s, string dd)
{
s = "2222";
}

public void gogo(string ss) 
{
ss = "2222";
}

然後我們打入斷點 , 希望能夠命中 !!!!!!(成功打入斷點)

 

 

 

至此 我們的 前台調用背景 封裝到此結束,我想你在也沒有見過這麼牛逼的封裝了吧!!代碼的世界太瘋狂了!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

 

 

      看了我寫的這麼多,你們發現一個東西沒有,好像介面還是重新整理了,如果我想 不重新整理提交後台怎麼辦?而且我還想 像 ajax 一樣執行完成後能夠    返回參數,能夠在前台繼續執行! 我想我們是在顛覆  webform的 寫法吧!!!!!

 

 

 

   

  

 

    

          

打造顛覆你想象中的高效能,輕量級的webform架構---js直接調背景封裝(第三天)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.