一天之内上手.Net+WAP项目(转载)
对WAP感兴趣,是从大一上学期刚开通手机wap包聊QQ和玩泡泡吧的时候;后来,又玩了一下wap的网游。呵呵,真神奇呀。
今天下午才开始接触WAP技术,从WAP的基本协议开始,到WAP的基本原理,以及WAP的发展历史、现状,哎呀呀,头都看大了。后来终于看到正题了,大概学了一下WML和WMLScript,并且安装了EasyPad WAPtor和WinWAP玩,嘿嘿,发现还不错!好玩,又简单。
虽然从中午开始就几乎没吃饭,但依旧兴致勃勃。天黑了,找到了一个网站,http://www.wapkf.com,叫“wap开发网”,发现原来wap项目竟然还可以用我熟悉的.net平台来开发! 哈哈,爽也!我一口气拜读完了"wap asp.net开发教程"区内的所有文章,并且自己动手试了很多东西。
主要有有两点体会:
(1 )用.net平台开发wap项目是相当简单的,你甚至可以根本不知道什么是WML! 而且.net平台可以根据浏览器不同生成的返回数据,也就是说,同一个项目,用手机看和用IE看都能看到!这是其他开发平台无法做到的!(个人猜测:至少用asp和php做的wap项目不行,比如http://wap.qq.com或者http://wap.wappp.com/,用手机和IE访问到的是两套完全不同的程序。) 比如http://wap.sswww.cn/这个网站,它肯定就是.net做的嘛!.net让wap项目的开发变得如此简单,我心里面都开始有点磨刀霍霍了。
(2 ).net 的wap程序和一般的asp.net程序最大的一个不同点,就是在一个页面内可以设置多个Form——这样设计应该是为了节约网络传输。这是一个相当好玩的功能,酷死了!我甚至在想,会不会一个简单的wap网站就用一个aspx文件就能够做出来……
真是越学越有劲,没想到.net平台上的wap这么容易就可以上手。这时我开始搜寻网上的一些用.net开发的wap程序源码。我才发现,网上基于.net的wap程序根本就很少。难道这种技术才起步? 而以asp或者php写的wap程序就相当地多,连论坛、blog、商城这种大型的程序都做出来了,而且相当精致和完善。.net平台就似乎受到很严重的冷落了。
好不容易找到了几套.net的wap程序(估计都把baidu可以搜到东西找完了,一共就七八个这样的程序源码吧),其中有些还是编译好了.dll的,有点儿郁闷。但是还好了,皇天不负有心人,我还是找到了一套称心如意的程序源码——一个留言本程序,而且真的被我猜中的!这套程序果然就只有一个aspx页面!
还好我有足够牢固的.net基础,虽然程序是用VS2003+VB写的(现在流行VS2005+C#),而且还有少量的语法错误,但是我很快就调试好了~~ 哈哈,激动,然后就开始一个文件一个文件地、一行一行地读代码了。
主要的数据库操作过程写在了一个叫“Bikewap”的类里面,并在index.asp.vb里面将之实例化。读取和删除数据过程没什么好说的,很常见。有一个函数比较有创意,就是替换留言里的非法字符,避免可能遇到的sql注入攻击等潜在的隐患。摘录如下:
'替换特殊字符
Public Function ReplaceSpecficChar(ByVal StrSource As String)
StrSource = Replace(StrSource, "<", "<")
StrSource = Replace(StrSource, ">", ">")
StrSource = Replace(StrSource, "'", "'")
StrSource = Replace(StrSource, """", """)
StrSource = Replace(StrSource, "&", "&")
Return StrSource
End Function
然后就到精彩部分了!由于该程序一共只有一个aspx页面,所以作者也利用.net wap页面的特性,在这个页面里使用了三个不同的Form,把留言本的所有操作都囊括在内了,并且很灵活地切换,非常精妙和精悍!
如下
<%@ Register TagPrefix="mobile" Namespace="System.Web.UI.MobileControls" Assembly="System.Web.Mobile" %>
<%@ Page Language="vb" AutoEventWireup="false" Inherits="BicyleWap.MobileWebForm1" trace="False" CodeFile="index.aspx.vb" CodeFileBaseClass="System.Web.UI.MobileControls.MobilePage" %>
<html>
<HEAD>
<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR"/>
<meta content="Visual Basic .NET 7.1" name="CODE_LANGUAGE"/>
</HEAD>
<body><mobile:form id="FrmMain" title="留言列表" Paginate="True" runat="server">
<mobile:Image id="ImageLogo" runat="server" ImageUrl="images\bikelogo.png"></mobile:Image>
<mobile:List id="NewList" runat="server" Decoration="Bulleted" ItemsPerPage="10" onItemCommand="OnItemSelection"></mobile:List>
<mobile:Link id="Link3" runat="server" NavigateUrl="#frmNewMessage">我要留言</mobile:Link>
<mobile:Link id="Link4" runat="server" NavigateUrl="#frmMain">回首页</mobile:Link></mobile:form><mobile:form id="FrmMessageView" title="查看留言" Paginate="True" runat="server">
<mobile:Label id="LabMessageTitle" runat="server" Wrapping="Wrap"></mobile:Label>
<mobile:Label id="LabPersonName" runat="server" Wrapping="Wrap"></mobile:Label>
<mobile:Label id="LabEmail" runat="server" Wrapping="Wrap"></mobile:Label>
<mobile:Label id="LabAddTime" runat="server" Wrapping="Wrap"></mobile:Label>
<mobile:Label id="LabMessageContent" runat="server" Wrapping="Wrap"></mobile:Label>
<mobile:Link id="Link5" runat="server" NavigateUrl="#frmNewMessage">我要留言</mobile:Link>
<mobile:Link id="Link1" runat="server" NavigateUrl="#frmMain">返回上级</mobile:Link>
</mobile:form><mobile:form id="FrmNewMessage" title="填写留言" runat="server">
<mobile:Label id="Label1" runat="server" Wrapping="Wrap">留言标题</mobile:Label>
<mobile:TextBox id="TxtMessageTitle" runat="server"></mobile:TextBox>
<mobile:RequiredFieldValidator id="RFVMessageTitle" runat="server" ControlToValidate="TxtMessageTitle" ErrorMessage="请填写留言标题"></mobile:RequiredFieldValidator>
<mobile:Label id="Label2" runat="server" Wrapping="Wrap">留言内容</mobile:Label>
<mobile:TextBox id="TxtMessageContent" runat="server"></mobile:TextBox>
<mobile:RequiredFieldValidator id="RFVMessageContent" runat="server" ControlToValidate="TxtMessageContent" ErrorMessage="请填写留言内容"></mobile:RequiredFieldValidator>
<mobile:Label id="Label3" runat="server" Wrapping="Wrap">您的昵称</mobile:Label>
<mobile:TextBox id="TxtPersonName" runat="server"></mobile:TextBox>
<mobile:RequiredFieldValidator id="RFVPersonName" runat="server" ControlToValidate="TxtPersonName" ErrorMessage="请留下您的昵称"></mobile:RequiredFieldValidator>
<mobile:Label id="Label4" runat="server" Wrapping="Wrap">您的邮箱</mobile:Label>
<mobile:TextBox id="TxtEmail" runat="server"></mobile:TextBox>
<mobile:RegularExpressionValidator id="RegularExpressionValidator1" runat="server" ControlToValidate="TxtEmail" ErrorMessage="请正确输入Email地址"
ValidationExpression="\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"></mobile:RegularExpressionValidator>
<mobile:Command id="CmdSubmit" runat="server" Format="Link">提交留言</mobile:Command>
<mobile:Link id="Link2" runat="server" NavigateUrl="#frmMain">查看留言</mobile:Link>
</mobile:form><mobile:form id="FrmSuccess" title="留言成功" runat="server">
<mobile:Image id="Image1" runat="server" ImageUrl="images\bikelogo.png"></mobile:Image>
<mobile:Label id="Label5" runat="server" Wrapping="Wrap">恭喜您,留言成功!</mobile:Label>
<mobile:Link id="Link6" runat="server" NavigateUrl="#frmMain">查看留言</mobile:Link>
<mobile:Link id="Link7" runat="server" NavigateUrl="#frmNewMessage">继续留言</mobile:Link>
</mobile:form>
</body>
</html>
注意这样格式的NavigateUrl :"#frmMain",这便是灵活跳转Form的方法,并且在index.aspx.vb里面设置活动Form的页面属性,比如ActiveForm = FrmSuccess。很类似一般.aspx页面里面的pannel,但是比pannel高级和方便多了,呵呵~
另外,在index.aspx.vb里面,作者也定义了几个对页面控件操作的函数,和普通的.net项目一样,没什么好说的。
就这样寥寥几行代码,就完成了一个留言本,不仅可以用IE直接浏览,而且还是可以在手机上浏览的wap程序。
最后附上该程序在winWAP下运行的截图(注意不是IE哦,winWAP上看到的是手机上看到的效果):
总结:在网上看了好几个小时的资料,学了这么多东西,有这样一个感慨:没想到.net和wap协议出来这么久了,把两者联合起来做项目的人还那么少,难道是因为这样做项目太简单了?呵呵 我觉得.net+wap可以是大家以后开发的一个方向。
首先,开发wap项目比较新颖,而且很好玩。
第二,用.net做wap项目也比较新颖,比较容易。
第三,这和我们平时学的.net并不冲突,不需要耗费很多时间,就可以成功转型。(其实说实话,我现在只懂WML的基本语法,根本看不怎么懂标准的WML文件。用.net做wap,真的不需要学太多的WML。)
第四,可以考虑以后做.net项目时,顺便做一个wap版本,也是一个亮点。
写这篇文章的目的,是希望和我一样对.net+wap感兴趣想自己动手的朋友能够沿着我走的路线和我一起学习,并且希望我学习过程中的一些心得体会能够对大家有所帮助。 才疏学浅加上言不达意,而且没有检查不知道有没有错别字,完全属于一时兴奋所写,还望高手们多多指教。
<%@ Register TagPrefix="mobile" Namespace="System.Web.UI.MobileControls" Assembly="System.Web.Mobile" %>
<%@ Page Language="vb" AutoEventWireup="false" Inherits="BicyleWap.MobileWebForm1" trace="False" CodeFile="index.aspx.vb" CodeFileBaseClass="System.Web.UI.MobileControls.MobilePage" %>
<html>
<HEAD>
<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR"/>
<meta content="Visual Basic .NET 7.1" name="CODE_LANGUAGE"/>
</HEAD>
<body><mobile:form id="FrmMain" title="留言列表" Paginate="True" runat="server">
<mobile:Image id="ImageLogo" runat="server" ImageUrl="images\bikelogo.png"></mobile:Image>
<mobile:List id="NewList" runat="server" Decoration="Bulleted" ItemsPerPage="10" onItemCommand="OnItemSelection"></mobile:List>
<mobile:Link id="Link3" runat="server" NavigateUrl="#frmNewMessage">我要留言</mobile:Link>
<mobile:Link id="Link4" runat="server" NavigateUrl="#frmMain">回首页</mobile:Link></mobile:form><mobile:form id="FrmMessageView" title="查看留言" Paginate="True" runat="server">
<mobile:Label id="LabMessageTitle" runat="server" Wrapping="Wrap"></mobile:Label>
<mobile:Label id="LabPersonName" runat="server" Wrapping="Wrap"></mobile:Label>
<mobile:Label id="LabEmail" runat="server" Wrapping="Wrap"></mobile:Label>
<mobile:Label id="LabAddTime" runat="server" Wrapping="Wrap"></mobile:Label>
<mobile:Label id="LabMessageContent" runat="server" Wrapping="Wrap"></mobile:Label>
<mobile:Link id="Link5" runat="server" NavigateUrl="#frmNewMessage">我要留言</mobile:Link>
<mobile:Link id="Link1" runat="server" NavigateUrl="#frmMain">返回上级</mobile:Link>
</mobile:form><mobile:form id="FrmNewMessage" title="填写留言" runat="server">
<mobile:Label id="Label1" runat="server" Wrapping="Wrap">留言标题</mobile:Label>
<mobile:TextBox id="TxtMessageTitle" runat="server"></mobile:TextBox>
<mobile:RequiredFieldValidator id="RFVMessageTitle" runat="server" ControlToValidate="TxtMessageTitle" ErrorMessage="请填写留言标题"></mobile:RequiredFieldValidator>
<mobile:Label id="Label2" runat="server" Wrapping="Wrap">留言内容</mobile:Label>
<mobile:TextBox id="TxtMessageContent" runat="server"></mobile:TextBox>
<mobile:RequiredFieldValidator id="RFVMessageContent" runat="server" ControlToValidate="TxtMessageContent" ErrorMessage="请填写留言内容"></mobile:RequiredFieldValidator>
<mobile:Label id="Label3" runat="server" Wrapping="Wrap">您的昵称</mobile:Label>
<mobile:TextBox id="TxtPersonName" runat="server"></mobile:TextBox>
<mobile:RequiredFieldValidator id="RFVPersonName" runat="server" ControlToValidate="TxtPersonName" ErrorMessage="请留下您的昵称"></mobile:RequiredFieldValidator>
<mobile:Label id="Label4" runat="server" Wrapping="Wrap">您的邮箱</mobile:Label>
<mobile:TextBox id="TxtEmail" runat="server"></mobile:TextBox>
<mobile:RegularExpressionValidator id="RegularExpressionValidator1" runat="server" ControlToValidate="TxtEmail" ErrorMessage="请正确输入Email地址"
ValidationExpression="\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"></mobile:RegularExpressionValidator>
<mobile:Command id="CmdSubmit" runat="server" Format="Link">提交留言</mobile:Command>
<mobile:Link id="Link2" runat="server" NavigateUrl="#frmMain">查看留言</mobile:Link>
</mobile:form><mobile:form id="FrmSuccess" title="留言成功" runat="server">
<mobile:Image id="Image1" runat="server" ImageUrl="images\bikelogo.png"></mobile:Image>
<mobile:Label id="Label5" runat="server" Wrapping="Wrap">恭喜您,留言成功!</mobile:Label>
<mobile:Link id="Link6" runat="server" NavigateUrl="#frmMain">查看留言</mobile:Link>
<mobile:Link id="Link7" runat="server" NavigateUrl="#frmNewMessage">继续留言</mobile:Link>
</mobile:form>
</body>
</html>
注意这样格式的NavigateUrl :"#frmMain",这便是灵活跳转Form的方法,并且在index.aspx.vb里面设置活动Form的页面属性,比如ActiveForm = FrmSuccess。很类似一般.aspx页面里面的pannel,但是比pannel高级和方便多了,呵呵~
另外,在index.aspx.vb里面,作者也定义了几个对页面控件操作的函数,和普通的.net项目一样,没什么好说的。
就这样寥寥几行代码,就完成了一个留言本,不仅可以用IE直接浏览,而且还是可以在手机上浏览的wap程序。
最后附上该程序在winWAP下运行的截图(注意不是IE哦,winWAP上看到的是手机上看到的效果):
分享到:
相关推荐
作为一个asp.net 程序员,当发现Vue.js的存在时就爱上它,但是在asp.net应用中使用Vue一时让我无从上手。直到最近有了点心得。就计划把之前做的一个记账应用前端改为Vue2实现。 具体请看我博客里介绍 ...
该项目是个人毕设/课设/大作业项目,代码都经过严格调试测试,功能ok才上传,可快速上手运行!欢迎下载使用,若遇到问题请及时私信沟通,帮助解决。 该资源主要针对计算机、通信、人工智能、自动化等相关专业的学生...
基于.NetCore + Quartz.Net + Vue 开箱即用的定时任务UI。几乎没有上手难度,不依赖数据库,只需在界面做简单配置
该项目是个人毕设/课设/大作业项目,代码都经过严格调试测试,功能ok才上传,可快速上手运行!欢迎下载使用,若遇到问题请及时私信沟通,帮助解决。 该资源主要针对计算机、通信、人工智能、自动化等相关专业的学生...
ASP.NET MVC从一开始的设计思路就与Struts不同,它的映射是利用路由配置而非xml,从而大大降低了开发复杂度,并且比Struts要更直观,更容易上手。可是,这并不表明ASP.NET MVC就是尽善尽美的。以下是MVC的一个项目...
1、一套基于ASP.NET MVC+EF6+Bootstrap开发出来的框架,源代码完全开源,可以帮助你解决C#以及.NET项目68%的重复工作,让开发人员远离加班。 2、使用ApacheLicense2.0协议,采用主流框架,容易上手,简单易学,学习...
asp.net wap 开发C# 只要会asp.net 查看此源码,半个小时上手wap开发, 制作你自己的wap网站。
奉上2本C#教程:C#.NET立即上手教程+完全讲解C# 本教程是C#语言完全入门版,适合想转行进行C#开发的新人
可以帮助解决.NET项目70%的重复工作,让开发更多关注业务逻辑。既能快速提高开发效率,帮助公司节省人力成本,同时又不失灵活性。 支持SQLServer、MySQL、Oracle、SQLite、Access 等多数据库类型。模块化设计,层次...
基础知识-核心技术-典型案例-综合练习-项目案例,241个典型实例,1个项目案例,357个练习题,一线开发人员全程贴心讲解,上手毫不费力。40小时多媒体语音视频教学,源代码和电子教案(PPT)1000余页编程参考宝典...
它的上手非常容易,官方API也十分详细,但是在我初次使用这个框架的时候,还是遇到了很多坑,一个个踩过之后才能完美避坑。 这里记录下使用Layui对数据进行分页展示的实现 前端:Layui框架 后台:ASP.NET MVC ...
十天学会asp.net教程,压缩文件,让你轻松上手 .net
基础知识-核心技术-典型案例-综合练习-项目案例,241个典型实例,1个项目案例,357个练习题,一线开发人员全程贴心讲解,上手毫不费力。40小时多媒体语音视频教学,源代码和电子教案(PPT)1000余页编程参考宝典...
后台:VS2019、vs2022 、.NetCore3.1 、.Net6、EFCore3.1/6.0、JWT、Dapper、SignalR、Quartz.Net、Autofac、SqlServer/MySql/PGSql/Oracle、Redis 前端:VsCode、Vue2/vue3(需要安装nodejs)、vuex、axios、promise...
基于ASP.Net和Lucene.Net开发的站内搜索引擎Demo源码+项目说明+sln解决方案.zip 1)EDC.SearchEngine.Dao 顾名思义,数据访问层,与数据库进行交互,各种SQL! (2)EDC.SearchEngine.Service 业务逻辑层,对...
该项目主要分为四个板块:用户信息管理、图书管理、业务管理、数据管理,适合新手、初学者独自上手的后台管理项目。
[oracle]快速上手工作+常用命令 下来就知道了
淘特Asp.NetCms(以下简称TotNetCms)是一套基于Asp.Net+C#技术的内容管理系统,是由淘特AspCms及JspCms的基础上发展而来。淘特CMS系列产品一直立足于门户网站解决方案,经过一年多的技术开发,终于推出 本产品。力争为...
这是一款采用了ext.net+ibatis.net+spring.net(接管controller)技术搭建的开发框架,代码干净,已包含基础的系统功能模块。 可以快速上手开发企业的信息管理系统,也可提供oracle 11g版本框架非常适合二次开发人员...