1.MVC我先说模型,共有20几张表,支持数据迁移。BaseInfos(基本资料),DetailInfos(详细资料),LoveViews(恋爱观)应该是做到一张User表中的,脑抽的我把他们分成了三张表,因为他们是分别存储的。下载之后,改成你自己的数据库,运行就能创建新表了。
3.视图:主要是基于Bootstrap2,Jquery1.7.2.,form.js注册的日期控件和Topic的编辑器用的是KendoUi,小伙伴们可以去换成Ckeditor,而Bootstrap用的地方主要是在
Layout的导航,后台导航,举报、私信、图片上传的模态对话框,在主页面使用它的栅格比较少,因为老是和导航对不齐,就放弃了。或许是我用的不对。Jquery用来交互,获取数据。form.js用的比较多,很多地方是form提交,没有用MVC自带的Create。原因就是不好看,而且不好控制,ie下面会走样。
二、前端特别说明
这里特别要说明的就是一些函数和窗口的触发
1.图片上传和举报框。
在用户主页的视图和PersonalInfo视图中会有这两个相似的html代码,是用来触发图片上传框的。
举报也同样的做法:但举报需要提供更多的信息,所以加了很多data属性。用脚本触发对话框
我想大家也明白了,就是这样的一回事,脚本没有压缩,大家可以去看。其他像喜欢,私信,都是一个道理,定义好一个样式,主要是样式名称,在layout里面写脚本,这样就很方便了。
2.form提交:
用form.js,能很好的控制整个提交过程,BeginForm,隐藏的form,图片上传的form。
编辑基本资料:
$('#Form1').submit(function(){$(this).ajaxSubmit(options);returnfalse;});varoptions={dataType:'json',success:processJson,};functionprocessJson(data){//还是返回json的好,再去更新。$(".infowrap").show();//......$("#sProfession").html(data.Profession);$("#sPosition").html(data.Position);$("#sSchool").html(data.School);$("#sState").html(data.State);}
二、后台逻辑
其实这个部分是最没有含金量的,只要大家清楚业务流程了,逻辑再怎么也能写出来。我也没有用AOP来记录日志或者处理异常,用IOC/DI来解耦。这也是我的弱点。所以我就简单说明下。
1.符合基本条件的用户:因为是相亲交友,所以要筛选用户。在BaseController中有个GetBaseUsers
///
158以上,江苏,22岁以上。那出现在这两个页面的用户就必须满足这三个条件是硬性指标,但学历,薪水是可以不匹配的。所以在推荐页面是这样的:
publicActionResultRecommendPage(){varid=CheckValid();if(id==-1||Session["uid"]==null){returnRedirectToAction("Logon","User");//不知道有没有效果}varrequire=LoveDb.One((Requirementr)=>r.UserId==id);varbaseusers=GetBaseUsers(id).Where(n=>PartMathUser(require,LoveDb.GetUninUser(n.UserId)));//找出所有正规的异性符合需求的。ViewBag.Sex=GetMyself().User.Sex=="man""她":"他";varuserlist=baseusers.Select(baseuser=>GetRecommendUser(baseuser.UserId)).ToList();returnPartialView(userlist.OrderByDescending(n=>n.Rate.TotalRate));}partMathUser就是一个专门用来比对的函数。原理就是捞出来一个一个比对,三个条件全部对了就是true。搜索也是一个道理,前台把条件传过来,后台来处理。我想这个地方应该是很有优化的空间。
3.推荐度和热度
计算推荐度,就是看两者资料的匹配度,而热度大家可以去看模型就知道了,就是统计数据再综合排名。换成百分率。
///
三、数据层
1.LoveDb仓库,像单例模式,获取实例,用反射封装了Add,Delete,One,All等常用方法。
namespaceFindlover.Migrations{usingSystem.Data.Entity;usingSystem.Data.Entity.Migrations;internalsealedclassConfiguration
四、问题和扩展
大大小小的问题还是蛮多的,兼容性的,脚本的,逻辑的,性能的,结构的。这些都还要慢慢的改。所以有问题不要惊奇,是很正常的。像上传和文本编辑应该换uploadfy和ckeditor控件。这个版本还么有加入分页,或者换成流行的滚动加载。增加一些好玩的功能,这些就要看你们的了,尽情的去折腾吧。小丘比特谢谢你!
祝你幸福~
五、说下开源
CodePlex和gitHub合作了,CodePlex可以用git上传,而git也变成了这个windows风格:方便大方好用。
在github的工程名称叫FindLover(说DreamLover更合适些吧),因为FindLover是先取的,名字想了很久才叫意中人。
总结下:现在MVC5已经出来了,我还在看MVC4,EntityFrameWork6也来了,还有VS2013,.NetFrameWork4.5。Bootstrap也到3了。Html5动画研究的还不咋地,还有各种前端的,后端的框架,目不暇接,人艰不拆啊。
新的技术提供了一些更好的方式,但是你更需要的是一个方向,一个ideal,几个一条路上的小伙伴。
(下载后可能又的问题。
1.缺少引用:请在package1中找缺少的引用。建议安装Nuget,会自动给你还原。
我晚上再补上创建表的SQL命令。数据库我不传了。
4.缺少引用的dll中,只有Nlog,kendo.MVC,Web.Provider是有用的,其他的缺少的dll可以移除。是因为之前做过其他的测试留下的。