N久前,见Monorail的开发方式:一个页面一个function的方式很有意思,于是,在一个外包项目(asp+access)中,尝试实现了一个asp版的,在此与大家分享一下:

关键文件:
      /vd_init.asp      :处理请求,并反射执行同名function
      /inc_controllers.asp      :控制器,该文件中的每个Function,对应一个同名的view,
                                          例:function articleList(){}      对应  articleList.asp
      /articleList.asp      :表现层的一个页面,同上,它的控制器是 function articleList(){},在inc_controllers.asp中
                        由于asp没法控制handler,所以请求的文件必须物理存在
      /inc_model.asp      模型层(可选)

/articleList.asp 要 <!--#include virtual="/inc_controllers.asp"-->
      /inc_controllers.asp 要 <!--#include virtual="/inc_init.asp"-->

vd_init.asp代码:

/inc_controllers.asp 控制器代码示例:

 1 function articleList(ClassID,ClassName)
 2     
 3     Sql="select ID,Title from Article where ClassID="&ClassID&" order by id desc"
 4     set rsPA=conn.execute(Sql)
 5     PropertyBag "rsPA",rsPA
 6     PropertyBag "title",ClassName
 7     '用过Monorail的朋友,这里应该很熟悉了,写法稍有变动
 8     '函数:PropertyBag 的实现在:/vd_init.asp中
 9 
10 end function

/articleList.asp

 1 <!--#include file="inc_controllers.asp"-->
 2 <html>
 3 <head>
 4     <title><%=vd.title%></title>
 5 </head>
 6 <body>
 7     <%
 8     while not vd.rsPA.eof
 9     %>
10         <div><%=vd.rsPA("Title")%></div>
11     <%
12         vd.rsPA.movenext
13     wend
14     %>
15 </body>
16 </html>
17 

代码解读:
      vd为一个全局对象,否则在controller中的function以外就调用不到了,它起到和Monorail中的${Var}同样的作用。
                              因为view层直接使用脚本,没有使用NVelocity之类型模板引擎,所以:
                               <%=vd.title%>同:${title}
      view层所使用的数据,由PropertyBag函数动态添加到vd对象中,由于js在对象处理方面非常灵活,所以该函数由服务端javascript实现。

再往下,由Script_Name得到当页面文件的名字,也就是view层的文件名,
            假设文件名是:articleList.asp,则得到函数名:articleList,并通过execute('articleList()') 动态执行。(反射)

本身view层也是asp文件,所以它可以使用所有asp中可以用的东西

至次,分层成功
上传中只使用了两层,仅为演示实现思路。

转载于:https://www.cnblogs.com/BugLiu/archive/2009/07/21/1527702.html

ASP 仿 Monorail MVC 的实现思路相关推荐

  1. 学习MonoRail MVC

    从留言簿开始,学习MonoRail MVC(一)   (来自:http://fuyun.cnblogs.com/) 关注MVC开发Web应用程序是看到<一个.NET的MVC Web框架>这 ...

  2. asp.net core mvc权限控制:分配权限

    1,分配权限到角色:Microsoft.AspNetCore.Identity.EntityFrameworkCore中提供了RoleManager类,类中提供了把权限分配到角色的方法: Task&l ...

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

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

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

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

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

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

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

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

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

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

  8. asp.net core mvc实现伪静态功能

    在大型网站系统中,为了提高系统访问性能,往往会把一些不经常变得内容发布成静态页,比如商城的产品详情页,新闻详情页,这些信息一旦发布后,变化的频率不会很高,如果还采用动态输出的方式进行处理的话,肯定会给 ...

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

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

最新文章

  1. 使用TensorRT集成推理inference
  2. 语义分割--Deep Dual Learning for Semantic Image Segmentation
  3. 哈夫曼树--顺序结构(建立、编码、解码)
  4. Dynamics CRM2013/2015 检索实体属性的两种方式
  5. 计算机组成原理译码器选择,计算机组成原理第三章习题参考解析.doc
  6. python交叉编译的配置 脚本怎么写_如何写一个简单的脚本并配置
  7. selenium自动化测试——常见的八种元素定位方法
  8. C#经典算法实践,回顾往生,更是致敬《算法导论》
  9. npm和angular_如何开发,使用和发布Angular库到NPM
  10. 比较好的电脑系统_效果好的筛分移动破碎站有优惠吗?
  11. 6-4-JSP隐式对象
  12. canvas绘制视频封面
  13. Android的Intent系统调用
  14. 控制继电器(esp32+继电器)
  15. python题目-完数
  16. i511260h参数 i5 11260h评测
  17. 颜色代码表(#号开头)
  18. 查询三方jar包漏洞
  19. android nexus 10 刷机,谷歌Nexus 10 recovery卡刷rom 刷机教程
  20. 债券融资和股权融资区别,债券融资的优缺点是什么

热门文章

  1. Unity Shader 表面着色器边缘光(Rim Lighting)二
  2. 怎么清除火狐浏览器的cookie?
  3. mysql8.0怎么样_MySQL8.0初体验
  4. 分享!史上最全的STM32库....
  5. Django之博客系统搭建一
  6. Java+Servlet+JSP实现Web宠物诊所管理系统
  7. @Validated使用
  8. AFNetworking源码学习 1
  9. “冰箱强行播广告关不了”上热搜,网友:买了块广告牌回家
  10. JAVAWEB_基础面试题