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时,才会去转换类型,对吧。既然是这样,我们又可以把这数据类型转换的写成:



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

  • 相关阅读:
    【第40套模拟题】【noip2011_mayan】解题报告【map】【数论】【dfs】
    【模拟题(63550802...)】解题报告【贪心】【拓扑排序】【找规律】【树相关】
    【模拟题(电子科大MaxKU)】解题报告【树形问题】【矩阵乘法】【快速幂】【数论】
    IMemoryBufferReference and IMemoryBufferByteAccess
    SoftwareBitmap and BitmapEncoder in Windows.Graphics.Imaging Namespace
    Windows UPnP APIs
    编译Android技术总结
    Windows函数转发器
    Two Ways in Delphi to Get IP Address on Android
    Delphi Call getifaddrs and freeifaddrs on Android
  • 原文地址:https://www.cnblogs.com/insus/p/3810032.html
Copyright © 2011-2022 走看看