首页 新闻 会员 周边 捐助

怎样去挨个判断一个类的所有字段的值是否为空

0
[已解决问题] 解决于 2013-09-06 17:35

问题描述:
项目上要完成一个用户注册审批需求,现在的流程是,先注册一个用户,注册完成后,直接进入系统补充自身的其他信息(分为不同的页面来填报),所有信息填报完成后才能进行提交。
数据库设计的是用户的字段全部能够为空。

问题是:怎么在后台判断用户的注册信息是否全部填充完整。有什么方法能够把来自数据库的一条数据(比如:var person=db.PERSON.SingleOrDefault(p => p.ID == personID);)中的所有字段轮训一遍,如果有null就记录下来。

 

注:有人说可以用反射,但是小弟不太会,请大家给个别的思路。项目用的MVC3.0+EF框架来做的

coding烫烫烫烫烫的主页 coding烫烫烫烫烫 | 菜鸟二级 | 园豆:222
提问于:2013-09-04 17:42
< >
分享
最佳答案
1

好吧。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;

namespace GetSon
{
    class Program
    {
        static void Main(string[] args)
        {
            User nullUser = new User();

            User notNullUser = new User();
            notNullUser.Name = "joey";

            Console.WriteLine(IsPropNull(nullUser));
            Console.WriteLine(IsPropNull(notNullUser));
            Console.ReadKey();
        }

        public static Boolean IsPropNull(Object obj)
        {
            Type t = obj.GetType();
            PropertyInfo[] props = t.GetProperties();
            foreach (var item in props)
            {
                if (item.GetValue(obj) == null)
                {
                    return true;
                }
            }
            return false;
        }
    }

    class User
    {
        public String Name { get; set; }
        public int Age { get; set; }
    }
}
奖励园豆:5
会长 | 专家六级 |园豆:12463 | 2013-09-04 18:31

coding烫烫烫烫烫 | 园豆:222 (菜鸟二级) | 2013-09-05 08:41

应该是item.GetValue(obj,null)吧?

coding烫烫烫烫烫 | 园豆:222 (菜鸟二级) | 2013-09-05 08:49

@Fri_yu: 这个和freamwork版本有关系,有的版本需要这个参数,有的不需要,好像是高版本freamwork不需要第二个参数。

会长 | 园豆:12463 (专家六级) | 2013-09-05 09:38

@会长: 我用的是4的,其他版本就不清楚了,多谢

coding烫烫烫烫烫 | 园豆:222 (菜鸟二级) | 2013-09-05 10:30
其他回答(5)
0

可以使用动态类型,遍历所有对象属性

看一下这篇文章的 三.2   枚举所有成员

http://www.cnblogs.com/JustRun1983/p/3163350.html

JustRun | 园豆:237 (菜鸟二级) | 2013-09-04 17:51

有点看不懂,不过还是多谢了

支持(0) 反对(0) coding烫烫烫烫烫 | 园豆:222 (菜鸟二级) | 2013-09-05 10:30
0

foreach(var item in 对象)

{

    if (空)

       ...

   else

      ...

}

jerry-Tom | 园豆:4077 (老鸟四级) | 2013-09-04 18:01

伪代码。好抽象

支持(0) 反对(0) coding烫烫烫烫烫 | 园豆:222 (菜鸟二级) | 2013-09-05 10:31

多谢回答

支持(0) 反对(0) coding烫烫烫烫烫 | 园豆:222 (菜鸟二级) | 2013-09-05 10:31
0

 SQL存储过程

Mundo Novo | 园豆:69 (初学一级) | 2013-09-04 20:26

后台代码控制,有点偏题了

支持(0) 反对(0) coding烫烫烫烫烫 | 园豆:222 (菜鸟二级) | 2013-09-05 10:31
0

你应该先在 页面用 JS 验证用户的输入,而且判断 表单的值,不是 类的属性。

geass.. | 园豆:1821 (小虾三级) | 2013-09-05 15:04

JS允许为空,因为是分为了不同的页面,页面一二三里面的东西是不可能保证同时不为空的,而且验证用户一个页面上的东西必须填报完整才允许保存,限制性太强

支持(0) 反对(0) coding烫烫烫烫烫 | 园豆:222 (菜鸟二级) | 2013-09-05 15:14
0

娜么美 | 园豆:204 (菜鸟二级) | 2018-12-17 11:48
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册