zoukankan      html  css  js  c++  java
  • 没有什么,开发ASP.NET时随便写写,想到什么写什么

    没有什么,开发ASP.NET时随便写写,想到什么写什么,这次想写点开发过程中,比如在数据库,某一张表中有一个字段,如下:



    上面代码示例中高亮字段,数据类型为BIT,它存储的值将为"True"或"False"。


    在前端aspx网页上,我们用一个形式来呈现友好的控件。一般来说,存储boolean值,一般使用CheckBox控件,选中得到为True,反之得到为False,这个是较理想的。但是现这里是要呈现性别,男或女。那就不能使用CheckBox控件了。最接近此要求,也许是RadioButtonList控件了。

    我们在程序中,设定几个数据集,作为RadioButtonList 的数据源:


    上面的Key使用int数据类型。

     上面的key使用布尔数据类型。

    上面的key使用string数据类型。其实还可以定义其它,这不是重要,但要理解其含义,为什么这样要这样定义,目的是什么。

    下面我们实现aspx的功能,也许有些网友会直接如下写法:

     这样死写法根本无需准备什么数据源。Insus.NET在想,这样做也没有什么问题。因为它这样确实可以的。看开发者开发时的想法与思维了。不过按照Insus.NET的习惯,数据呈现与程序封装,还是在cs程序中对RadioButtonList进行数据源绑定。如果后台绑定数据源,在aspx网页只会拉一个RadioButtonList控件即可。


    看.aspx.cs的

     


    上面代码是完全没有问题,或许你就是这样写的。但是Insus.NET并不会这样做,不想把任何在需要在Page_Load()事件运行的代码放在Page_Load()方法内。理想的实现,是另写一个私有方法:


     在网页浏览时,看到的效果:



    OK,上面只是一些曾通的RadioButtonList的数据源绑定。假如在数据源绑定时,还要根据数据,男或女把RadioButtonList的选择选中状态。



    但是,偏偏在你写程序时,你会遇上是根据值去设置,它是以0或是1来判断,那我们怎样来实现了呢? 这样情况之下,需要修改一下程序:


    上面浏览网页时,看到的效果,如下:

    写到这里,我们会想起,真正开发时,我们是不知什么情况之下是传入Text,什么情况之下传入的是Value。嗯,我们就应该考虑到这些情形。下面Insus.NET的解决方法:

    写两个私有方法,并重载。是Byvalue和ByText的。这样在引用它们时,只是传入是值或是文本即可。此时能把这个功能实现这样,也许觉得很完美。但是某一情况之下,如你是使用DropDownList去呈现一些数据。上面的方法似乎有相似之处,但是完全不能拿来使用。只完另外再写两个方法:

     
    对吧。我们会不禁住地问,是否有一个万全之策? 解决这个问题,我们应该想到,不管是RadioButtonList还是DropDownList控件,均是继承ListControl类,如果想到这点,我们就可以把这四个私有方法,写成两个通用的:


    呵呵,此时不管你是传入DropDownList还是RadioButtonList均没有问题,是吧。

     平时,Insus.NET开发时,连参数也不想传入过多。是否可以做到? 如: 

    void SetSelectedByDataValueField(string byValue)


    在较高一些C#版本,是可以解决此问题的。使用扩展方法:

    那在引用时,就可以只传入一个参数:

     上面一系列的动作,是解决RadioButtonList设置Selected的状态。

    在面向对象以及三层开发过程中,Insus.NET基本上没有在程序中写SQL语句来存与取同数据库进行沟通。我们会在程序编写一个类,如:

    上面的类别,只写一个property。因此这篇博文中,重点是说它。
    用户在前台数据呈现中,作出选择,需要把选择的结果存回至数据表中,看一下语法

    由于我们写property时,定义的数据类型为布尔(bool)。上面写的

    objMember.Sex = this.RadioButtonListSex.SelectedItem.Value;


    一个是得到string,一个需要bool。因此需要处理一下数据类型,才能纠正错误:


    上面代码示例中,是把选择的值转换为布尔值。
    由于开发一开始时,就为RadioButtonList控件设置了两个值,0与1。因此我们可以对上面的代码稍改一下:


    拿掉高亮的代码,由于我们在Switch之前,已经定义好一个私有变量:

    bool sex = true;


    这样不管用户选择了男还是女,程序在跑Switch时,只有case是0时,才会去转换类型,对吧。既然是这样,我们又可以把这数据类型转换的写成:



    呵呵,随便写写,望网友能看得懂。

  • 相关阅读:
    CSS的学习
    nodejs
    eureka注册中心
    netty的机制
    分布式事务
    spring cloud的基础
    一个发散动画的菜单控件(主要记录控件x,y坐标的运动状况)
    关于ViewPager高度自适应(随着pager页的高度改变Viewpager的高度)
    ViewPager的使用总结
    Android实现沉浸式状态栏(必须高逼格)
  • 原文地址:https://www.cnblogs.com/insus/p/3810032.html
Copyright © 2011-2022 走看看