MVC4做网站后台:用户管理 —用户

news/2024/5/9 7:57:52/文章来源:https://blog.csdn.net/weixin_34321977/article/details/85604218

这块进行用户管理,可以浏览、查询已注册的用户,修改用户资料,删除用户等。没有做添加用户,不知是否必要。列表页还是使用easyui的datagrid。这个思路跟用户组的方式差不多。

1、接口InterfaceUser 命名空间Ninesky.Repository

功能查询用户,修改用户资料(这里考虑到用户登录也需要修改登录日期,所以放着吧)。

using Ninesky.Models;namespace Ninesky.Repository
{/// <summary>/// 用户接口/// <remarks>/// 版本:v1.0/// 创建:2013.12.24/// 修改:2014.1.11/// </remarks>/// </summary>interface InterfaceUser{/// <summary>/// 查找用户/// </summary>/// <param name="userId">用户Id</param>/// <returns>用户信息</returns>User Find(int userId);/// <summary>/// 修改用户信息/// </summary>/// <param name="user">用户信息</param>/// <returns>布尔值</returns>bool Modify(User user);}
}

先后写具体实现代码类。

using Ninesky.Models;
using System.Linq;namespace Ninesky.Repository
{public class UserRepository{protected NineskyContext nineskyContext = new NineskyContext();public User Find(int userId){return nineskyContext.Users.SingleOrDefault(u => u.UserId == userId);}public bool Modify(User user){nineskyContext.Users.Attach(user);nineskyContext.Entry<User>(user).State = System.Data.EntityState.Modified;return nineskyContext.SaveChanges() > 0;}
}

2、添加后台接口InterfaceUser 继承自Ninesky.Repository.InterfaceUser,命名空间为Ninesky.Areas.Admin.Repository。

这里Find方法返回的数据提供给datagrid使用由于,要用到分页所以返回数据必须包含总记录数因此构造了DatagridPagingViewModle这个视图模型。

using Ninesky.Models;namespace Ninesky.Areas.Admin.Repository
{/// <summary>/// 用户接口/// <remarks>/// 版本:v1.0/// 创建:2013.12.24/// 修改:2014.1.11/// </remarks>/// </summary>interface InterfaceUser:Ninesky.Repository.InterfaceUser{/// <summary>/// 删除用户/// </summary>/// <param name="userId">用户Id</param>/// <returns>布尔值</returns>bool Del(int userId);/// <summary>/// 查找用户列表/// </summary>/// <param name="userName">用户名(可以为一部分)</param>/// <param name="groupId">用户组。大于0时有效</param>/// <param name="pageInde">当前页。和pageSize同时大于0时有效</param>/// <param name="pageSize">每页记录数。和pageInde同时大于0时有效</param>/// <returns>DatagridPagingViewModle类型的用户列表</returns>DatagridPagingViewModle Find(string userName, int groupId, int pageInde, int pageSize);}
}

实现的库类

using Ninesky.Models;
using System.Linq;namespace Ninesky.Areas.Admin.Repository
{/// <summary>/// 后台用户/// 版本:v1.0/// 创建:2014.1.8/// 修改:2014.1.9/// </summary>public class UserRepository:Ninesky.Repository.UserRepository,InterfaceUser{public DatagridPagingViewModle Find(string userName, int groupId, int pageInde, int pageSize){DatagridPagingViewModle _datagridPagingData = new DatagridPagingViewModle();IQueryable<User> _users = nineskyContext.Users.OrderByDescending(u => u.RegTime);if (!string.IsNullOrEmpty(userName)) _users = _users.Where(u => u.UserName.Contains(userName));if (groupId > 0) _users = _users.Where(u => u.GroupId == groupId);if (pageInde > 0 && pageSize > 0){_datagridPagingData.total = _users.Count();_datagridPagingData.rows = _users.Skip((pageInde - 1) * pageSize).Take(pageSize);}return _datagridPagingData;}public bool Del(int userId){var _user = new User { UserId = userId };nineskyContext.Users.Attach(_user);nineskyContext.Entry<User>(_user).State = System.Data.EntityState.Deleted;return nineskyContext.SaveChanges() > 0;}}
}

3、控制器。由于在用户组部分添加了用户控制器,这里直接打开。UserController

添加List方法。

/// <summary>/// 用户列表/// </summary>/// <returns>局部视图</returns>public ActionResult List(){return PartialView();}

这里继续使用datagrid 的ajax方式加载,还要添加ListJson函数用来返回json数据

/// <summary>/// 用户列表Json/// </summary>/// <param name="userName">用户名</param>/// <param name="groupId">用户组</param>/// <param name="page">页码</param>/// <param name="rows">每页行数</param>/// <returns>DatagridPagingViewModle的Json格式</returns>public JsonResult ListJson(string userName, int groupId = 0, int page = 1, int rows = 20){return Json(userRepository.Find(userName, groupId, page, rows));}

OK。在List action上右键添加局部视图

<div class="c_navbar">后台管理 >> 用户管理</div>
<div class="fs_wapper"><div class="header"></div><div><table id="userDataGrid" class="easyui-datagrid" data-options="url:'@Url.Action("ListJson", "User")',fitColumns:true,singleSelect:true,toolbar:'#toolbar',pagination:true,onDblClickRow:function(){SetCenter('@Url.Content("~/Admin/User/Index")/'+($(this).datagrid('getSelected').UserId));}"><thead><tr><th data-options="field:'UserName'">用户名</th><th data-options="field:'GroupId',formatter: function(value,row,index){return Group(value);}">用户组</th><th data-options="field:'Email'">Email</th><th data-options="field:'QQ'">QQ号码</th><th data-options="field:'Tel'">电话号码</th><th data-options="field:'RegTime',formatter: function(value,row,index){return jsonDateFormat(value);}">注册时间</th><th data-options="field:'LastLoginTime',formatter: function(value,row,index){return jsonDateFormat(value);}">上次登录时间</th></tr></thead></table><div id="toolbar">用户名:<input id="userName" type="text" style="width:60px; height:16px;" /> 用户组:<input id="usergroup" class="easyui-combobox" data-options="textField:'Name',valueField:'UserGroupId',url:'@Url.Action("ListJson", "UserGroup")'" /><a id="userSearch" class="easyui-linkbutton">查询</a></div></div>
</div>
<script type="text/javascript">var _groups;//用户组列表$("#userSearch").click(function () {$("#userDataGrid").datagrid('load', {userName: $("#userName").val(),groupId: $("#usergroup").combobox('getValue')});});function Group(gid) {var _name;if (_groups == undefined) _groups = $("#usergroup").combobox('getData');for (i = 0; i < $(_groups).size() ;i++){if (_groups[i].UserGroupId == gid) {_name = _groups[i].Name;}}return _name;}
</script>

这个与用户组的视图基本类似,预览下效果。image

 

代码:http://pan.baidu.com/s/1sj0d5TV

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_793667.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于大型网站技术演进的思考(一)

原文地址&#xff1a;http://www.cnblogs.com/sharpxiajun/p/4237704.html这个系类的文章很好&#xff0c;真的需要花时间来读一读&#xff01;&#xff01; 前不久公司请来了位互联网界的技术大牛跟我们做了一次大型网站架构的培训&#xff0c;两天12个小时信息量非常大&#…

关于大型网站技术演进的思考(四)--存储的瓶颈(4)

如果数据库需要进行水平拆分&#xff0c;这其实是一件很开心的事情&#xff0c;因为它代表公司的业务正在迅猛的增长&#xff0c;对于开发人员而言那就是有不尽的项目可以做&#xff0c;虽然会感觉很忙&#xff0c;但是人过的充实&#xff0c;心里也踏实。 数据库水平拆分简单说…

关于大型网站技术演进的思考(五)--存储的瓶颈(5)

关于大型网站技术演进的思考&#xff08;五&#xff09;--存储的瓶颈&#xff08;5&#xff09; 上文里我遗留了两个问题&#xff0c;一个问题是数据库做了水平拆分以后&#xff0c;如果我们对主键的设计采取一种均匀分布的策略&#xff0c;那么它对于被水平拆分出的表后续的查…

关于大型网站技术演进的思考(六)--存储的瓶颈(6)

关于大型网站技术演进的思考&#xff08;六&#xff09;--存储的瓶颈&#xff08;6&#xff09; 在讲数据库水平拆分时候&#xff0c;我列出了水平拆分数据库需要解决的两个难题&#xff0c;它们分别是主键的设计问题和单表查询的问题&#xff0c;主键问题前文已经做了比较详细…

使用HTML5、CSS3和jQuery增强网站用户体验[留存]

记得几年前如果你需要添加一些互动元素到你的网站中用来改善用户体验&#xff1f;是不是立刻就想到了flash实现&#xff1f;这彷佛年代久远的事了。使用现在最流行的Web技术HTML5&#xff0c;CSS3和jQuery&#xff0c;同样也可以实现类似的用户体验。而且使用这些特性将会比使用…

途牛网站无线架构变迁实践

origin: http://geek.csdn.net/news/detail/55369途牛从一开始的单机系统&#xff0c;发展到现在已拥有数百个分布式部署的系统。本文主要将途牛网站无线系统在从小到大的过程中&#xff0c;遇到的问题以及解决方法与大家分享&#xff0c;希望为大家带来一定借鉴。文章将从服务…

大型网站架构系列:电商网站架构案例(1)

origin: http://www.cnblogs.com/itfly8/p/5006197.html大型网站架构是一个系列文档&#xff0c;欢迎大家关注。本次分享主题&#xff1a;电商网站架构案例。从电商网站的需求&#xff0c;到单机架构&#xff0c;逐步演变为常用的&#xff0c;可供参考的分布式架构的原型。除具…

大型网站架构系列:电商网站架构案例(2)

origin: http://www.cnblogs.com/itfly8/p/5006200.html电网网站架构案例系列的第二篇文章。主要讲解网站架构分析&#xff0c;网站架构优化&#xff0c;业务拆分&#xff0c;应用集群架构&#xff0c;多级缓存&#xff0c;分布式Session。 五、网站架构分析 根据以上预估&…

大型网站架构系列:电商网站架构案例(3)

origin: http://www.cnblogs.com/itfly8/p/5009005.html本文章是电商网站架构案例的第三篇&#xff0c;主要介绍数据库集群&#xff0c;读写分离&#xff0c;分库分表&#xff0c;服务化&#xff0c;消息队列的使用&#xff0c;以及本电商案例的架构总结。 6.5数据库集群&#…

大型分布式网站架构技术总结

origin: http://www.cnblogs.com/itfly8/p/4967966.html本文是学习大型分布式网站架构的技术总结。对架构一个高性能&#xff0c;高可用&#xff0c;可伸缩&#xff0c;可扩展的分布式网站进行了概要性描述&#xff0c;并给出一个架构参考。一部分为读书笔记&#xff0c;一部分…

安装php cms 系统教程,如何安装PHPCMS网站管理系统

帝国CMS技术互助群&#xff1a;540946827 一帮大神带你装逼带你飞&#xff01;还有漂亮的妹纸陪你玩哦&#xff01;(一)安装前的预备Phpcms 具备跨平台特性&#xff0c;可以运行于 Linux/FreeBSD/Unix 及微软 Windows 2000/2003 等各种操作系统环境下。我们已在软件中 针对上述…

大型网站架构演变和知识体系

2019独角兽企业重金招聘Python工程师标准>>> 之前也有一些介绍大型网站架构演变的文章&#xff0c;例如LiveJournal的、ebay的&#xff0c;都是非常值得参考的&#xff0c;不过感觉他们讲的更多的是每次演变的结果&#xff0c;而没有很详细的讲为什么需要做这样的演…

linux日志服务源码,Linux系统下nginx+php实现清理服务器网站日志

本篇文章主要讲述的是在Linux系统下用nginx和php实现清理服务器网站日志&#xff0c;具有一定参考价值&#xff0c;感兴趣的朋友可以了解一下&#xff0c;希望对你能有所帮助。1.清空nginx站点日志的内容(如果删除日志文件&#xff0c;只有重启服务器才能重新生成日志文件进行记…

玛曲seo关键词互点软件_请看!张家港seo关键词优化价格,启销软件

广东无忧云网络科技有限公司为您详细解读XzMLCf张家港seo关键词优化价格的相关知识与详情&#xff0c;跟着时间的推移&#xff0c;页面排名由用户行为、用户交互、用户保举等因素决议&#xff0c;而新页面排名则由相关关键字密度、文章本创性等因素决议。那种影响会渐渐削弱&am…

layui的tab加入其他页面_网站建设费用_网站制作如何让页面更具特色

对于一个页面&#xff0c;毫无特色&#xff0c;是没有办法吸引用户的目光&#xff0c;只有有特色的页面才能吸引更多的用户&#xff0c;才能留住用户&#xff0c;所以页面设计的好坏会直接影响网站用户的体验&#xff0c;在这个网络十分发达的年代&#xff0c;用户没有太多的时…

python爬取电商数据_吴裕雄--天生自然PYTHON爬虫:使用Selenium爬取大型电商网站数据...

用python爬取动态网页时&#xff0c;普通的requests&#xff0c;urllib2无法实现。例如有些网站点击下一页时&#xff0c;会加载新的内容&#xff0c;但是网页的URL却没有改变(没有传入页码相关的参数)&#xff0c;requests、urllib2无法抓取这些动态加载的内容&#xff0c;此时…

多平台的网站实现单点登录系统(SSO)的开发思路 让你的会员中心更加统一(参考资料)...

单点登录并不是一个新鲜的玩意儿&#xff0c;比较官方的解释是企业业务整合的解决方案之一&#xff0c;通俗来讲SSO就是一个通用的用户中心&#xff0c;国内比较流行的UCenter就是一套单点登录解决方案。而近期以CSDN明文存储用户密码并泄露用户信息开始的各大网站争先恐后的泄…

报名系统网页导出html,教资报名系统提示网站兼容性怎么办 ie浏览器兼容性操作流程...

教师资格证报名2021年入口已经于1月14日开通&#xff0c;3月13日举行笔试&#xff0c;相信不少考生在报名过程中&#xff0c;遇到兼容性站点添加的问题&#xff0c;报名的浏览器不是IE系列&#xff0c;兼容性站点如何添加呢?为帮助各位考生报考&#xff0c;小编来帮助大家解决…

国外服务器 百度云,百度云加速如何配置网站海外加速

一、纯静态网站加速所谓纯静态网站就是网页全部由HTML纯静态页生成的网页&#xff0c;没有会员注册登陆、在线支付等需要调用数据库的功能。这类网页想要加速很简单&#xff0c;只需要把网页全部缓存至百度云加速节点即可。操作方法如下&#xff1a;1.进入报表下拉的-特定页面规…

java和seo哪个好_seo和java哪个更好

一个seo行业站点&#xff0c;科学的内容制作应该与seo相关&#xff0c;且内容本身是有人搜索的。seo和java哪个更好是有人搜索的语句&#xff0c;且与seo是强相关的&#xff0c;对于站增网来讲&#xff0c;这样的内容再适合不过了。任何一门技术&#xff0c;如果精通&#xff0…