ASP.NET开发,简化与封装

微软的ASP.NET的开发,就是面向对象的编程,当然前端也能体验至面向对象的话,使用Web控件也必须的。

任一控件,我们均可以在后端.aspx.cs或.aspx.vb程序中new一个对象出来。

很多场合里,在开发ASP.NET开发中,后端与前端交互,我们使用控件确实能方便与快捷互通。

本篇所涉及的内容以html markup标签与javascript(或jQuery)无关,因为演示的是Web控件应用。Insus.NET经常会针对开发的应用程序,写一些常用或是特定的对象或是控件。在一起开发的团队的能句方便用使用,能得到客户需求的功能与效果。

开发这些对象或是控件,也并非一开始就能写得出来,均是经过一系列编程之后,再次review或是优化的结果。

举个例子来说明,先在SQL Server数据库中,创建一个数据表,如[dbo].[UserInfo]:


对这个表,添加几笔记录:


写一个存储过程,是获取刚才添加的所有记录:

OK,数据库层已经设计好了,我们去ASP.NET网站写程序,需要把这些数据呈现于网页上。
逻辑层就使用《ASP.NET开发,从二层至三层,至面向对象 (3)》 http://www.cnblogs.com/insus/p/3826706.html 将来的的博文演示中也会使用它。

在App_Code目录下,创建一个以数据表名相同的一个类(对象):

 
新建一个网页.aspx,用它来呈现数据表的数据,直接拉数据控件GridView:



在.aspx.cs代码中,实现给GridView控件绑定数据:

 

浏览一下:


以上的实现,相信很多学习与开发asp.net的人都会,太简单了,根本不值得一说一提一写。

 
问题来了,最后一列[Sex],性别具体1代码是男还是女,反之亦如此。能否以更友好清晰的表达来表现?下面列几种网友用常的方法:
第一种方法,写一个小函数去替换:

 
写好函数之后,在.aspx的Gridview控件,需要修改,不能使用自动产生列了:


预览结果:


第二种方法,较为复杂一些,不过也较常使用的,在.aspx分三步来修改GridView:

 

下面是实现OnRowDataBound="GridView1_RowDataBound":



此种方法预览结果跟第一种方法是一样的。

第三种方法,是Insus.NET使用的方法。出现这样的问题,多数是多表关联,一张表某些字段是另一个表的外键值。呈现时,均是键值或是代号。但实际是需要显示实际意义的字段。

解决它,可以创建一个表,是key与value对应的表:



然后修改一下[dbo].[usp_UserInfo_GetAll]存储过程:

 

在asp.net程序中,在后端无需修心任代码。


在.aspx页中的GridView中,仅引用另一个字段名:


三种方法,均演示完成了。哪一种方法,你觉得好,就使参考哪一种。

下面有新的要求,客户要求,将显示的0或1的信息,使用一张图片来替代。
这要求不难,用文字“男”或“女”还是用图片去替代0或1的方法,均是一样的。用Image去实现就是了。下面Insus.NET来演示一番:
实现之前,得先准备好两张图片,放于站点某一目录之下。

 

上面有三个步骤标记1至标记3。

 编写一个私有函数:


然后就可以写 OnRowDataBound="GridView1_RowDataBound"事件了:

 

改好了,浏览看看效果:

 
上面图片替换方法,是通用大家所使用的方法。不过Insus.NET的方法,却不是这样来做。Insus.NET需要封装 GetSexImagePath(string num)或是GetSex(string num)函数

另外,由这地方的呈现在一个网站中,也许不止一次(网页)呈现,在管理员后台,会员后台,前端面向所有用户呈现的网页均要此样式呈现。


因此,可以写成一个控件即可,先在App_Code创建一个类别SexImg:


有三个public的property以及override方法RenderContents()。重要的一点,是继承了WebControl类。

接着,我们打开web.config文件,注册一下上面我们创建好的控件:

 

现在的问题是怎样使用这个控件呢?跟Web控件一样,没有什么分别:

 


在GridView控件内,使用刚才写好的控件,直接指写三个property。

在.aspx.cs内,无需写什么代码:

 

浏览的效果,跟上面的一样:

 

最后一个演示,学会了封装与创建自己定义控件。Insus.NET虽然只是依性别来举列,实现开发时,可会遇上很多类别,目录等相关的。

方法掌握了,相似的功能可以轻易实现。

 

转载于:https://www.cnblogs.com/insus/p/3869575.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/473201.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

调用Django中的API时,使用Pycharm给后端view打断点的方法

一、前言 使用Pycharm写后端很便捷,但是项目运行后,无法找到简洁的debug方法,本文主要以图文形式,说明一下利用Postman与Pycharm来给项目debug 二、方法 1、使用Pycharm打开项目文件,点击右上角,编辑配置文…

[Kaggle] Spam/Ham Email Classification 垃圾邮件分类(BERT)

文章目录1. 数据处理2. 下载预训练模型3. 加载数据4. 定义模型5. 训练6. 提交测试结果练习地址:https://www.kaggle.com/c/ds100fa19 相关博文: [Kaggle] Spam/Ham Email Classification 垃圾邮件分类(spacy) [Kaggle] Spam/Ham E…

python 中main函数总结

Python使用缩进对齐组织代码的执行,所有没有缩进的代码(非函数定义和类定义),都会在载入时自动执行,这些代码,可以认为是Python的main函数。 每个文件(模块)都可以任意写一些没有缩进…

python从图片里提取主要颜色

一、需求: 从一张图片里提取主要的几种颜色 二、效果: 三、代码 from PIL import Image, ImageDraw, ImageFontdef get_dominant_colors(infile):image Image.open(infile)# 缩小图片,否则计算机压力太大small_image image.resize((80, …

LeetCode 790. 多米诺和托米诺平铺(动态规划)

文章目录1. 题目2. 解题1. 题目 有两种形状的瓷砖&#xff1a; 一种是 2x1 的多米诺形&#xff0c; 另一种是形如 “L” 的托米诺形。 两种形状都可以旋转。 XX <- 多米诺XX <- "L" 托米诺 X给定 N 的值&#xff0c;有多少种方法可以平铺 2 x N 的面板&…

Django后端编辑图片提取主要颜色API

一、需求 前端页面需要调用后端API&#xff0c;实现获取主要颜色json数据 二、图片效果 三、代码实现&#xff1a; # Create your views here. import os from django.core.files.storage import default_storage from django.http import HttpResponse, JsonResponse from …

js:获取本周日期

<html> <head> <script> function formOnload() { //按周日为一周的最后一天计算var date new Date();var this_day date.getDay(); //今天是这周的第几天var step_s -this_day1; //上周日距离今天的天数&#xff08;负数表示&#xff09;if (this_day 0…

LeetCode 898. 子数组按位或操作(前缀和思想)

文章目录1. 题目2. 解题2.1 超时解2.2 正解1. 题目 我们有一个非负整数数组 A。 对于每个&#xff08;连续的&#xff09;子数组 B [A[i], A[i1], ..., A[j]] &#xff08; i < j&#xff09;&#xff0c;我们对 B 中的每个元素进行按位或操作&#xff0c;获得结果 A[i] …

Linux命令行配置静态IP地址

一、前言 IP地址分为了A-E共计5类地址&#xff0c;其中A、B、C在全球范围内统一分配&#xff0c;D、E为特殊地址。 A类地址&#xff1a;第一段为网络号&#xff0c;剩下三段都是主机号&#xff0c;最大主机数1600W&#xff0c;私有IP地址是10.0.0.0-10.255.255.255 B类地址&…

C#中用委托实现C++的回调函数

C中抓图回调函数 void (CALLBACK* DisplayCBFun)(long nPort,char * pBuf,long nSize,long nWidth,long nHeight,long nStamp,long nType,long nReceaved)); C#中定义为委托 public delegate void DisplayCBFun(int nPort, IntPtr pBuf, int nSize, int nWidth, int nHeight, …

天池 在线编程 回合制游戏(前缀和)

文章目录1. 题目2. 解题1. 题目 QW 是一个回合制游戏的玩家&#xff0c;今天他决定去打怪。 QW 在一场战斗中会碰到 n 个怪物&#xff0c;每个怪物有攻击力 atk[i]&#xff0c;每回合结束时如果第 i 个怪物还活着&#xff0c;就会对 QW 造成 atk[i] 的伤害。 QW 只能在每回合…

Python程序员的圣经——《Python编程快速上手:让繁琐工作自动化》尾末附下载地址

一、前言 如今&#xff0c;人们面临的大多数任务都可以通过编写计算机软件来完成。Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。通过Python编程&#xff0c;我们能够解决现实生活中的很多任务。 今天给大家分享一份Python程序员的圣经——《Python编程快…

POJ 3608

1.计算P上y坐标值最小的顶点&#xff08;称为 yminP &#xff09;和Q上y坐标值最大的顶点&#xff08;称为 ymaxQ&#xff09;。 2.为多边形在 yminP 和 ymaxQ 处构造两条切线 LP 和 LQ 使得他们对应的多边形位于他们的右侧。 此时 LP 和 LQ 拥有不同的方向&#xff0c; 并且 y…

天池 在线编程 聪明的销售(计数+贪心)

文章目录1. 题目2. 解题1. 题目 销售主管的任务是出售一系列的物品&#xff0c;其中每个物品都有一个编号。 由于出售具有相同编号的商品会更容易&#xff0c;所以销售主管决定删除一些物品。 现在她知道她最多能删除多少物品&#xff0c;她想知道最终袋子里最少可以包含多少…

关于计算机书籍的收集与整理(一)

本文来源&#xff1a;https://github.com/pinefor1983/CS-Growing-book 一、程序员技术、管理和认知 1、程序员技术&管理 关于程序员职场晋升&#xff0c;这是我的7点具体建议优秀程序员的7个特点对码农后浪的6点建议程序员百万年薪进阶指南做好技术管理&#xff0c;你必须…

域名状态:运营商设置了客户禁止删除保护?过期域名也不能注册为什么?

有的时候,我们打开一个网站.有的时候打不开.这个时候我们在站长工具里面查询,会有域名状态&#xff1a;运营商设置了客户禁止删除保护信息.这个状态对客户来说还是比较好的&#xff0c;以免客户一不小心把域名删了。域名过期后会依次经过以下几个阶段后才可以注册的&#xff1a…

天池 在线编程 放小球(动态规划)

文章目录1. 题目2. 解题2.1 动态规划1. 题目 n 个桶中小球的个数已知, 可以操作 k 次(每次从桶中取出一个球,或者添加一个球), 每个桶有规定的最大容量 W[i]。 求操作后两相邻桶之间的最大差值的平方的最小值。 n < 100 W[i] < 100样例 1: 输入: 5 6 [1,2,3,4,5] [15,…

关于计算机书籍的收集与整理(二)

本文来源&#xff1a;https://github.com/justjavac/free-programming-books-zh_CN#%E7%9B%AE%E5%BD%95 国外程序员在 stackoverflow 推荐的程序员必读书籍&#xff0c;中文版。stackoverflow 上的程序员应该阅读的非编程类书籍有哪些&#xff1f; 中文版github 上的一个流行的…

LeetCode 1716. 计算力扣银行的钱(等差数列)

文章目录1. 题目2. 解题1. 题目 Hercy 想要为购买第一辆车存钱。他 每天 都往力扣银行里存钱。 最开始&#xff0c;他在周一的时候存入 1 块钱。 从周二到周日&#xff0c;他每天都比前一天多存入 1 块钱。 在接下来每一个周一&#xff0c;他都会比 前一个周一 多存入 1 块钱…

互联网产品 从设计到运营 这中间提高须要关注的站点

互联网产品 从设计到运营 这中间提高须要关注的站点 https://github.com/edagarli/resourcecollects 转载于:https://www.cnblogs.com/mengfanrong/p/3897858.html