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);
}
注册成功。
浙公网安备 33010602011771号