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

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);

}

}

?>

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

  1. 从零开始实现ASP.NET Core MVC的插件式开发(四) - 插件安装

    标题:从零开始实现ASP.NET Core MVC的插件式开发(四) - 插件安装 作者:Lamond Lu 地址:https://www.cnblogs.com/lwqlun/p/11343141. ...

  2. 从零开始实现ASP.NET Core MVC的插件式开发(五) - 插件的删除和升级

    标题:从零开始实现ASP.NET Core MVC的插件式开发(五) - 使用AssemblyLoadContext实现插件的升级和删除 作者:Lamond Lu 地址:https://www.cnb ...

  3. 从零开始实现 ASP.NET Core MVC 的插件式开发(九) - 如何启用预编译视图

    标题:从零开始实现 ASP.NET Core MVC 的插件式开发(九) - 升级.NET 5及启用预编译视图 作者:Lamond Lu 地址:https://www.cnblogs.com/lwql ...

  4. 从零开始实现 ASP.NET Core MVC 的插件式开发(七) - 问题汇总及部分问题解决方案...

    标题:从零开始实现 ASP.NET Core MVC 的插件式开发(七) - 问题汇总及部分问题解决方案 作者:Lamond Lu 地址:https://www.cnblogs.com/lwqlun/ ...

  5. 从零开始实现ASP.NET Core MVC的插件式开发(六) - 如何加载插件引用

    标题:从零开始实现ASP.NET Core MVC的插件式开发(六) - 如何加载插件引用. 作者:Lamond Lu 地址:https://www.cnblogs.com/lwqlun/p/1171 ...

  6. 从零开始实现ASP.NET Core MVC的插件式开发(三) - 如何在运行时启用组件

    标题:从零开始实现ASP.NET Core MVC的插件式开发(三) - 如何在运行时启用组件 作者:Lamond Lu 地址:https://www.cnblogs.com/lwqlun/p/112 ...

  7. 从零开始实现ASP.NET Core MVC的插件式开发(二) - 如何创建项目模板

    标题:从零开始实现ASP.NET Core MVC的插件式开发(二) - 如何创建项目模板 作者:Lamond Lu 地址:https://www.cnblogs.com/lwqlun/p/11155 ...

  8. 从零开始实现ASP.NET Core MVC的插件式开发(一) - 使用Application Part动态加载控制器和视图...

    如果你使用过一些开源CMS的话,肯定会用过其中的的插件化功能,用户可以通过启用或者上传插件包的方式动态添加一些功能,那么在ASP.NET Core MVC中如何实现插件化开发呢,下面我们来探究一下. ...

  9. 从零开始实现ASP.NET Core MVC的插件式开发(一) - 使用ApplicationPart动态加载控制器和视图

    目录 前言 什么是ApplicationPart? 创建项目 添加控制器和视图 如何动态加载插件中的控制器?# 如何加载组件的预编译Razor视图? 最终效果 总结 源代码:https://githu ...

  10. Web Control 开发系列(三) 解析IPostBackEventHandler和WebForm的事件机制

    WebForm最大的魅力大概就是它自己的一套事件处理机制了,要做一个好的Control,必须深入理解这套机制,只有这样才可以让我们的Control有一整套Professional的Event,而IPo ...

最新文章

  1. 初识linux以及bash的部分使用及技巧
  2. android 图标的格式,Android Design
  3. Android:ListView常见错位之CheckBox错位
  4. java 常用类库_JAVA(三)JAVA常用类库/JAVA IO
  5. neditor 自定义工具栏配置
  6. php iis redis,iis windows phpstudy安装redis扩展
  7. 47 -算法 -回文串 -Leetcode 125 - 验证回文串
  8. Java基础学习总结(141)——Cron 表达式使用再总结
  9. 【陆勤阅读】参加kaggle数据挖掘竞赛是怎样一种体验?
  10. [C# 线程处理系列]专题四:线程同步
  11. js 基础之Math对象
  12. 跟我学算法-pca(降维)
  13. Java程序员必备的一些流程图(拿走不谢)
  14. CMOS图像传感器内部结构及工作原理
  15. 接近开关 NPN 与 PNP的区别
  16. Mysql SSL 2206错误
  17. 韩信点兵问题的简单算法 downmoon
  18. virtualbox出现failed to attach usb,VERR_PDM_NO_USB_PORTS问题解决
  19. pygame-KidsCanCode系列jumpy-part8-记录历史最高分
  20. 网站推广优化教程100条(SEO,网站关键字优化,怎么优化网站,如何优化网站关键字)

热门文章

  1. 区块链教程Fabric1.0源代码分析流言算法Gossip服务端一兄弟连区块链教程
  2. linux-vi命令
  3. iPython Notebook安装和初体验
  4. C++Builder 2010深入TForm类之属性
  5. C/C++中怎样获取日期和时间
  6. HSRP协议详解:配置HSRP实现网关的冗余备份
  7. 【2012 - 百度之星资格赛 - H:用户请求中的品牌】
  8. Ant-编译构建(1)-HelloWorld
  9. 2018 Multi-University Training Contest 8 - Taotao Picks Apples
  10. 在Visualforce页面中使用Visual Flow