私は現在、小さくて単純なプロジェクトに取り組んでいます。次のようにデータベースに保存されたユーザーのリストがあります。
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();
}