冯 海

一个程序新人菜鸟的日记,希望大家多多关照。QQ:32316131

2018教程之mvc+ef之四:搭建admin管理实现用户管理2之部门管理及用户管理后续

再接着讲功能强大的用户管理,但为了在用户列表那进行部室和进行部室排序等,先在这加入部门管理。

部门就是一个字段,一个部室名字,一个ID自动生成,这个ID和USER表中的ID相关联。

一、部室管理

1.在Models下新建一个Department.cs模型。

public class Department
	{
		public string Id { get; set; }
		[Display(Name = "部门名称")]
		public string DepartmentName { get; set; }

 

	}

2. 为了方便,我们还一直没有建个上下亠,在项目下新建文件夹DAL,新建一个上下文MyDALContent.cs,继承DbContext

using System.Data.Entity;

namespace MYtest2018.DAL
{
	public class MyDALContent : DbContext
	{
		/// <summary>
		/// 连接
		/// </summary>
		public MyDALContent() : base("Mytest2018") { }


	}
}

 3.新建控制器。Department,注意这里选择带EF带视图的,一并自动生成,难得麻烦。

   这些操作都注意要先成生解决方案。

 

 

 

 

 二、实现部门的点击直接删除

 1.在INDE看见列表后,点删除能直接删除,不要再去详细页面了。

代码,在后台增加一个Remove方法

// POST: /Departments/Delete/5
		[HttpGet]
		public async Task<ActionResult> Remove(string id)
		{
			if (id == null)
			{
				return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
			}
			Department department = await db.Departments.FindAsync(id);
			if (department == null)
			{
				return HttpNotFound();
			}
			db.Departments.Remove(department);
			await db.SaveChangesAsync();
			 
			return RedirectToAction("Index");
		}

  这个[HttpGet] 是重点哟。

2.index的视图代码

<div class="wrapper wrapper-content animated fadeInRight">
    <div class="row">
        <div class="col-lg-12">
            <div class="ibox float-e-margins">
                <div class="ibox-title">
                    <h5>List of 部门</h5>
					<div class="ibox-tools">
						@Html.ActionLink("Create New", "Create", null, new { @class = "btn btn-primary btn-xs"})
					</div>
                </div>
                <div class="ibox-content">

<table class="table table-striped">
    

@foreach (var item in Model) {
    <tr>
		<td>
			@Html.DisplayFor(modelItem => item.Id)
		</td>
        <td>
            @Html.DisplayFor(modelItem => item.DepartmentName)
        </td>
        <td>
	 
            @Html.ActionLink("修改", "Edit", new { id=item.Id }, new { @class = "btn btn-primary btn-sm" })
            @Html.ActionLink("删除", "Remove", new { id=item.Id },  new { onclick = "confirm('你确认删除吗?')" , @class = "btn btn-white btn-sm" })
        </td>
    </tr>
}

</table>

                </div>
            </div>
        </div>
    </div>
 </div>

 效果图

 

 

 三、新建用户中增加部门的选择。

因为一般来说,是要先建好部门,再增加人员。所以在新建用户的时候,最好先建好部门,关联进来。

在AccountController中先引入

namespace MYtest2018.Controllers
{

    [Authorize]
    public class AccountController : Controller
    {

		private MyDALContent db = new MyDALContent();
		private ApplicationSignInManager _signInManager;
        private ApplicationUserManager _userManager;  

 会提示引用using MYtest2018.DAL;

然后在注册用户的GET方法中增加一个读取所有部门的代码,用viewbag传值

	[AllowAnonymous]
        public ActionResult Register()
        {
			///读出所有的部门名称分类,以下拉框的形式写入。
			ViewBag.drolistDepart =  (db.Departments).Select(g => new SelectListItem
			{
				Text = g.DepartmentName,
				Value = g.Id,
				Selected = false
			});
			return View();
 
        }

  然后更改注册方法。

  先更改MODEL中的 RegisterViewModel,增加一个部门ID

 public class RegisterViewModel
    {
		#region 扩展

		public string DepartmentId { get; set; }
		public  string HeaderPic { get; set; }
		[Display(Name = "真名")]
		public string RealName { get; set; }
		public  string QQ { get; set; }
		public  DateTime CreateTime { get; set; }
		[Display(Name = "用户名")]
		public string UserName { get; set; }

		[Display(Name = "电话(手机/固话)")]
		[Phone]
		public string PhoneNumber { get; set; }
		#endregion
		
        [EmailAddress]
        [Display(Name = "电子邮件")]
        public string Email { get; set; }
        [Required]
        [StringLength(100, ErrorMessage = "{0} 必须至少包含 {2} 个字符。", MinimumLength = 6)]
        [DataType(DataType.Password)]
        [Display(Name = "密码")]
        public string Password { get; set; }
        [DataType(DataType.Password)]
        [Display(Name = "确认密码")]
        [Compare("Password", ErrorMessage = "密码和确认密码不匹配。")]
        public string ConfirmPassword { get; set; }
    }

   生成解决方案。

更改注册方法。增加部门的写入

 

[HttpGet]
		[AllowAnonymous]
		public ActionResult Register()
        {
			///读出所有的部门名称分类,以下拉框的形式写入。
			ViewBag.drolistDepart =  (db.Departments.OrderBy(x=>x.Sort)).Select(g => new SelectListItem
			{
				Text = g.DepartmentName,
				Value = g.Id,
				Selected = false
			});
			return View();
 
        }

        //
        // POST: /Account/Register
        [HttpPost]
        [AllowAnonymous]
        [ValidateAntiForgeryToken]
        public async Task<ActionResult> Register(RegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
				var _creatTime = DateTime.Now;
				var _headerPic = "/Content/noheaderpic.png";
				var user = new ApplicationUser { UserName = model.UserName, RealName = model.RealName, Email = model.Email, QQ = model.QQ, DepartmentId = model.DepartmentId, PhoneNumber = model.PhoneNumber, CreateTime = _creatTime, HeaderPic = _headerPic };
				var result = await UserManager.CreateAsync(user, model.Password);
				if (result.Succeeded)
				{
					//    await SignInManager.SignInAsync(user, isPersistent:false, rememberBrowser:false);

					//    // For more information on how to enable account confirmation and password reset please visit https://go.microsoft.com/fwlink/?LinkID=320771
					//    // 发送包含此链接的电子邮件
					//    // string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
					//    // var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
					//    // await UserManager.SendEmailAsync(user.Id, "确认你的帐户", "请通过单击 <a href=\"" + callbackUrl + "\">這裏</a>来确认你的帐户");

					return RedirectToAction("ListUsers", "Account");
				}
				AddErrors(result);
            }

            // 如果我们进行到这一步时某个地方出错,则重新显示表单
            return View(model);
        }

  注册成功。

 

posted @ 2018-08-25 15:08  秋天来了哟  阅读(171)  评论(0)    收藏  举报
认识就是缘份,愿天下人都快乐!
QQ: 32316131
Email: 32316131@qq.com