zoukankan      html  css  js  c++  java
  • paip.PHPasp—jsp实现事件机制 WEBFORM式开发

    paip.PHP-asp—jsp实现事件机制 WEBFORM式开发

     

    Author作者Attilax 1466519819@qq.com

     

    前言... 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方式要大大的快..

    PHPASPJSP也是可以以WEBFORM开发的.,这里我们以PHP为例子说明如何进行WEBFORM式开发..

     

    CODE Behind代码分离

    如需要实现代码分离,除了MVC以外,还可以使用Code-Behind技术来实现,更加简单,开发效率比MVC要快得多..并且容易实现模块化,组件化

    在我里我们实现两个页面,一个放界面HTML代码,,起名为webform.php,一个放代码,命名为webform.CodeFile.php

     

    要实现CODE Behind,webform.php 第一行加入以下代码:

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

    页面控件

    ASPNET中,我们是用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个按钮时,LABLETEXTBOX值都设为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);

        }

    }

    ?>

  • 相关阅读:
    math.js:灵活强大的JavaScript数学库
    math.js:灵活强大的JavaScript数学库
    math.js:灵活强大的JavaScript数学库
    前端开发必须要了解的CSS原理
    前端开发必须要了解的CSS原理
    前端开发必须要了解的CSS原理
    GET和POST有什么区别?
    GET和POST有什么区别?
    GET和POST有什么区别?
    ACM2026
  • 原文地址:https://www.cnblogs.com/attilax/p/15199822.html
Copyright © 2011-2022 走看看