paip.PHP-asp—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);

    }

}

?>

本系统旨在构建一套面向高等院校的综合性教务管理平台,涵盖学生、教师及教务处三个核心角色的业务需求。系统设计着重于实现教学流程的规范化与数据处理的自动化,以提升日常教学管理工作的效率与准确性。 在面向学生的功能模块中,系统提供了课程选修服务,学生可依据培养方案选择相应课程,并生成个人专属的课表。成绩查询功能支持学生查阅个人各科目成绩,同时系统可自动计算并展示该课程的全班最高分、平均分、最低分以及学生在班级内的成绩排名。 教师端功能主要围绕课程与成绩管理展开。教师可发起课程设置申请,提交包括课程编码、课程名称、学分学时、课程概述在内的新课程信息,亦可对已开设课程的信息进行更新或撤销。在课程管理方面,教师具备录入所授课程期末考试成绩的权限,并可导出选修该课程的学生名单。 教务处作为管理中枢,拥有课程审批与教学统筹两大核心职能。课程设置审批模块负责处理教师提交的课程申请,管理员可根据教学计划与资源情况进行审核批复。教学安排模块则负责全局管控,包括管理所有学生的选课最终结果、生成包含学号、姓名、课程及成绩的正成绩单,并能基于选课与成绩数据,统计各门课程的实际选课人数、最高分、最低分、平均分以及成绩合格的学生数量。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值