我目前正在做一个小而简单的项目。我有一个存储在数据库中的用户列表,如下所示:
Id (uniqueidentifier primary key), FirstName(varchar), LastName(varchar), PhoneNo(varchar), DomainAC(varchar)
我正在使用 ASP.net MVC 创建具有以下简单功能的页面:
在页面上显示所有用户详细信息 - 我使用以下代码完成了此操作,该代码由我使用连接到我的数据库的 ModelController 的 Index 函数创建的视图生成:
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<IEnumerable<Proj.Models.Employee>>" %>
<!DOCTYPE html>
<html>
<head runat="server">
<meta name="viewport" content="width=device-width" />
<title>Index</title>
</head>
<body>
<p>
<%: Html.ActionLink("Create New", "Create") %>
</p>
<table>
<tr>
<th>
<%: Html.DisplayNameFor(model => model.LastName) %>
</th>
<th>
<%: Html.DisplayNameFor(model => model.PhoneNo) %>
</th>
<th>
<%: Html.DisplayNameFor(model => model.DomainAC) %>
</th>
<th>
<%: Html.DisplayNameFor(model => model.FirstName) %>
</th>
<th></th>
</tr>
<% foreach (var item in Model) { %>
<tr>
<td>
<%: Html.DisplayFor(modelItem => item.LastName) %>
</td>
<td>
<%: Html.DisplayFor(modelItem => item.PhoneNo) %>
</td>
<td>
<%: Html.DisplayFor(modelItem => item.DomainAC) %>
</td>
<td>
<%: Html.DisplayFor(modelItem => item.FirstName) %>
</td>
<td>
<%: Html.ActionLink("Edit", "Edit", new { id=item.Id }) %> |
<%: Html.ActionLink("Details", "Details", new { id=item.Id }) %> |
<%: Html.ActionLink("Delete", "Delete", new { id=item.Id }) %>
</td>
</tr>
<% } %>
</table>
</body>
</html>
这将呈现一个裸 HTML 页面,在一个裸表中显示所有用户。有创建/编辑/删除按钮;但他们什么也不做。
我想做的很简单,对于每一行
if(DomainAC == currently logged in Domain AC || currently logged in Domain AC is admin)
Allow user to edit/update details.
经过一番调查,我认为我需要创建一个自定义控制器来读取您当前登录的身份,并在 DB 返回的行 == 当前登录的用户时显示编辑按钮。
[Authorize(Users = @Context.User.Identity.Name)]
public ActionResult CurrentUser()
{
ViewBag.Message = "You are the logged in user";
return View();
}
[Authorize(Roles = @"DOMAIN\Administrators")]
public ActionResult Admins()
{
ViewBag.Message = "Your are admin.";
return View();
}