问题描述:
项目上要完成一个用户注册审批需求,现在的流程是,先注册一个用户,注册完成后,直接进入系统补充自身的其他信息(分为不同的页面来填报),所有信息填报完成后才能进行提交。
数据库设计的是用户的字段全部能够为空。
问题是:怎么在后台判断用户的注册信息是否全部填充完整。有什么方法能够把来自数据库的一条数据(比如:var person=db.PERSON.SingleOrDefault(p => p.ID == personID);)中的所有字段轮训一遍,如果有null就记录下来。
注:有人说可以用反射,但是小弟不太会,请大家给个别的思路。项目用的MVC3.0+EF框架来做的
好吧。
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; } } }
应该是item.GetValue(obj,null)吧?
@Fri_yu: 这个和freamwork版本有关系,有的版本需要这个参数,有的不需要,好像是高版本freamwork不需要第二个参数。
@会长: 我用的是4的,其他版本就不清楚了,多谢
可以使用动态类型,遍历所有对象属性
看一下这篇文章的 三.2 枚举所有成员
http://www.cnblogs.com/JustRun1983/p/3163350.html
有点看不懂,不过还是多谢了
foreach(var item in 对象)
{
if (空)
...
else
...
}
伪代码。好抽象
多谢回答
SQL存储过程
后台代码控制,有点偏题了
你应该先在 页面用 JS 验证用户的输入,而且判断 表单的值,不是 类的属性。
JS允许为空,因为是分为了不同的页面,页面一二三里面的东西是不可能保证同时不为空的,而且验证用户一个页面上的东西必须填报完整才允许保存,限制性太强