MVC4做網站后台:用戶管理 —用戶


這塊進行用戶管理,可以瀏覽、查詢已注冊的用戶,修改用戶資料,刪除用戶等。沒有做添加用戶,不知是否必要。列表頁還是使用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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM