很多没写vb.net了,最近应朋友邀请用vb.net为JiMuUI写一个简单的Demo程序,笔记本电脑上只安装了vs2019,只好将就用vs2019写个.net framework4.0的asp.net。说起vb.net 开发web,估计很少有人用MVC吧,所以还是直接用webform的方式算了。既然说是前后端分离,那至少页面和数据操作要各自独立处理吧,因此后台数据操作使用ashx一般处理程序(当然也可以直接使用webapi)。先来张最后的效果图:
废话不多说,本次开发主要的技术包括:后台vb.net+asp.net webform+ado.net+ashx+路由、前端:jimuui+bootstrap+jquery。
JIMuUI是什么?JiMuUI是基于bootstrap3.3.7的css开发的一套jQuery响应式组件集合,用于快速开发响应式布局、移动设备优先的 WEB 项目,帮助所有开发者通过同一份代码快速、高效的适配手机、平板、PC等多终端设备。这是官网(官网地址:www.jimuui.com)的介绍,我就不作其他说明了。
现在流行使用路由,特别是.net core中基本上都是通过路由向浏览器提供映射后的url,可惜.net framework默认没有为ashx一般处理程序实现路由,不过我们可以仿照aspx页面路由的PageRouteHandler类简单实现即可。为此,我们需要新建一个AshxRouteHandler类,代码如下:
Imports System.Web.Routing
Imports System.Web.Compilation
''' <summary>
''' 一般处理程序(.ashx)的路由实现类
''' </summary>
Public Class AshxRouteHandler
Implements IRouteHandler
Private Property _VirtualPath As String
Private Property _CheckPhysicalUrlAccess As Boolean
''' <summary>
''' 初始化ASHX一般处理程序路由
''' </summary>
''' <param name="VirtualPath">一般处理程序的虚拟路径(必须以~/开始并以.ashx结束)</param>
''' <remarks></remarks>
Public Sub New(ByVal VirtualPath As String)
Try
CheckVirtualPath(VirtualPath)
_VirtualPath = VirtualPath
Catch ex As Exception
Throw ex
End Try
End Sub
Public Sub New(ByVal VirtualPath As String, ByVal CheckPhysicalUrlAccess As Boolean)
Try
CheckVirtualPath(VirtualPath)
_VirtualPath = VirtualPath
_CheckPhysicalUrlAccess = CheckPhysicalUrlAccess
Catch ex As Exception
Throw ex
End Try
End Sub
Public Function GetHttpHandler(ByVal requestContext As System.Web.Routing.RequestContext) As System.Web.IHttpHandler Implements System.Web.Routing.IRouteHandler.GetHttpHandler
Return CType(BuildManager.CreateInstanceFromVirtualPath(_VirtualPath, GetType(IHttpHandler)), IHttpHandler)
End Function
Private Sub CheckVirtualPath(ByVal VirtualPath As String)
If VirtualPath.Substring(0, 2) <> "~/" Then