程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> paip.PHP-asp—jsp實現事件機制 WEBFORM式開發

paip.PHP-asp—jsp實現事件機制 WEBFORM式開發

編輯:關於PHP編程

paip.PHP-asp—jsp實現事件機制 WEBFORM式開發 

前言... 1

CODE Behind代碼分離... 1

頁面控件... 1

實現一個窗體... 2

實現狀態VIEWSTATE保存... 2

Page_Ini事件與Page_Load事件... 3

實現button1_click事件... 4

實現button2_click事件... 4

附注: webform.CodeFile.php源碼... 5

 

前言
我們都知道asp.net是以WEBFORM式開發的,易於理解,基於事件機制..開發效率比起MVC方式要大大的快..

PHP,ASP,JSP也是可以以WEBFORM開發的.,這裡我們以PHP為例子說明如何進行WEBFORM式開發..

 

CODE Behind代碼分離
如需要實現代碼分離,除了MVC以外,還可以使用Code-Behind技術來實現,更加簡單,開發效率比MVC要快得多..並且容易實現模塊化,組件化

在我裡我們實現兩個頁面,一個放界面HTML代碼,,起名為webform.php,一個放代碼,命名為webform.CodeFile.php

 

要實現CODE Behind,在webform.php 第一行加入以下代碼:

<?php    require('webform.CodeFile.php'); ?>

頁面控件
在ASP。NET中,我們是用RUNAT=“SERVER”,來表明一個HTML控件可以在服務端引用..在PHP中,需要使用變通的方式來實現

LABEL控件:

<span>  <?phpecho( $Label1_Text);?>     </span>

     <input type="hidden" name="Label1" value="<?phpecho($Label1_Text);?>" />

 

Textbox控件:

<input type="text" name="TextBox1"  value="<?phpecho($TextBox1_Text);?>"/>

 

實現一個窗體
在這裡我們需要一個LABLE,一個TEXTBOX控件,兩個按鈕控件..

我們的要求是當點擊第1個按鈕時,將LABLE與TEXTBOX值都設為button1 click…

當點擊第二個按鈕時,將LABLE值設為 TEXTBOX中的輸入值

總代碼如下

<?php    require('webform.CodeFile.php'); ?>

 

<form id="form1" name="form1" method="post" action="">

  <p>

  <span>  <?phpecho( $Label1_Text);?>     </span>

     <input type="hidden" name="Label1" value="<?phpecho($Label1_Text);?>" />

  </p>

  <p>input:

    <input type="text" name="TextBox1"  value="<?phpecho($TextBox1_Text);?>"/>

  </p>

  <p>

    <input type="submit" name="Button1" value="提交" />

     <input type="submit" name="Button2" value="提交2" />

  </p>

</form>

 

 

實現狀態VIEWSTATE保存
在CODE Behind文件中,webform.CodeFile.php..  我們寫代碼來實現前台界面控件狀態保存。。當界面提交後返回時控件值都在..

 

<?php

//保持控件狀態,viewstate管理

viewstate();

 

//__VIEWSTATE

function  viewstate()

{

  

    foreach ($_REQUEST as $color){

        $key=key($_REQUEST);

          

        $controlName=$key."_Text";

        //      echo ($key."---".$color."<br>");

        global $$controlName;

        $$controlName  =$color;

        next($_REQUEST);

    }

}

 

 

Page_Ini事件與Page_Load事件
當我們第一次訪問此窗體時,觸發Page_Ini事件,..每次訪問此頁面時,則總會觸發Page_Load事件..

 

//頁面事件注冊

eventReg4Page();

 

function Page_Ini()

{

 

    echo "page ini event ";

    global $Label1_Text;

    $Label1_Text="  Page_Ini click";

    global    $TextBox1_Text;

    $TextBox1_Text="  Page_Ini click";

 

}

 

function Page_Load()

{

 

 

    echo "page load event ";

 

}

 

實現button1_click事件
 

//控件事件注冊

eventReg("Button1",Button1_Click);

 

//按鈕控件Button1的點擊事件

function Button1_Click()

{

    global    $TextBox1_Text;

    $TextBox1_Text="  button1 click";

    global $Label1_Text;

    $Label1_Text="  button1 click";

 

}

//事件注冊

function eventReg($controlName,$controlEvent)

{

 

 

 

    if($_POST[$controlName])

        $controlEvent();

 

 

}

 

實現button2_click事件
//按鈕控件Button2的點擊事件

function Button2_Click()

{

         global    $TextBox1_Text;

//  $TextBox1_Text="  button2 click";

        global $Label1_Text;

        $Label1_Text=$TextBox1_Text;

 

}

 

附注: webform.CodeFile.php源碼
 

<?php

//保持控件狀態,viewstate管理

viewstate();

//控件事件注冊

eventReg("Button1",Button1_Click);

eventReg("Button2",Button2_Click);

//頁面事件注冊

eventReg4Page();

 

 

 

function Page_Ini()

{

 

    echo "page ini event ";

    global $Label1_Text;

    $Label1_Text="  Page_Ini click";

    global    $TextBox1_Text;

    $TextBox1_Text="  Page_Ini click";

 

}

 

function Page_Load()

{

 

 

    echo "page load event ";

 

}

 

//按鈕控件Button1的點擊事件

function Button1_Click()

{

    global    $TextBox1_Text;

    $TextBox1_Text="  button1 click";

    global $Label1_Text;

    $Label1_Text="  button1 click";

 

}

//按鈕控件Button2的點擊事件

function Button2_Click()

{

         global    $TextBox1_Text;

//  $TextBox1_Text="  button2 click";

        global $Label1_Text;

        $Label1_Text=$TextBox1_Text;

 

}

 

//-----------------以下函數可以做為公共函數,包含進來-------------------

 

//事件注冊

function eventReg($controlName,$controlEvent)

{

    if($_POST[$controlName])

        $controlEvent();

}

//頁面事件注冊

function eventReg4Page()

{

    if(!$_POST)

    {

        if(function_exists("Page_Ini"))

            call_user_func("Page_Ini");

    }

        

    //注冊Page_Load事件

    if(function_exists("Page_load"))

        call_user_func("Page_load");

 

}

//__VIEWSTATE

function  viewstate()

{

  

    foreach ($_REQUEST as $color){

        $key=key($_REQUEST);

          

        $controlName=$key."_Text";

        //      echo ($key."---".$color."<br>");

        global $$controlName;

        $$controlName  =$color;

        next($_REQUEST);

    }

}

?>

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved