こんにちはボブ、私が知っていますこれは古い質問ですが、私はあなたのアカウントを見ていましたあなたの問題によく合った答えがありました。私がこれをしているときは、次のような管理コントローラを指定します。
このコードは、あなたが望む機能を組み込んだほとんどの管理者ベースのアカウント機能を実行するために使用できます。
管理コントローラ
public class AdminController : Controller
{
private ApplicationDbContext dbContext;
private ApplicationUserManager _userManager;
public ApplicationUserManager UserManager
{
get
{
return _userManager ?? HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();
}
private set
{
_userManager = value;
}
}
public AdminController()
{
this.dbContext = new ApplicationDbContext();
}
[HttpGet]
public ActionResult Index()
{
// Get all users
var currentUsers = this.dbContext.Users.ToList();
var model = new AdminIndexModels
{
Users = currentUsers
};
return this.View(model);
}
[HttpGet]
public async Task<ActionResult> EditName(string id)
{
// Get relevant user
var user = await this.UserManager.FindByIdAsync(id);
if (user == null)
{
return this.View("Error");
}
var model = new AdminNameModels
{
Id = user.Id,
FullName = user.FullName
};
return this.View(model);
}
[HttpPost]
public async Task<ActionResult> EditName(AdminNameModels model)
{
if (!ModelState.IsValid)
{
return this.View(model);
}
var user = await this.UserManager.FindByIdAsync(model.Id);
if (user == null)
{
return this.View("Error");
}
user.FirstName = model.FirstName;
user.LastName = model.LastName;
var result = await this.UserManager.UpdateAsync(user);
if (!result.Succeeded)
{
// Do something with error here
return this.View(model);
}
// Add confirmation message here
return this.RedirectToAction("Index");
}
[HttpGet]
public async Task<ActionResult> EditPassword(string id)
{
// Get relevant user
var user = await this.UserManager.FindByIdAsync(id);
if (user == null)
{
return this.View("Error");
}
var model = new AdminPasswordModels
{
Id = user.Id,
FullName = user.FullName
};
return this.View(model);
}
[HttpPost]
public async Task<ActionResult> EditPassword(AdminPasswordModels model)
{
if (!ModelState.IsValid)
{
return this.View(model);
}
var user = await this.UserManager.FindByIdAsync(model.Id);
if (user == null)
{
return this.View("Error");
}
user.PasswordHash = this.UserManager.PasswordHasher.HashPassword(model.NewPassword);
var result = await this.UserManager.UpdateAsync(user);
if (!result.Succeeded)
{
// Do something with error here
return this.View(model);
}
// Add confirmation message here
return this.RedirectToAction("Index");
}
[HttpGet]
public async Task<ActionResult> EditArchived(string id)
{
// Get relevant user
var user = await this.UserManager.FindByIdAsync(id);
if (user == null)
{
return this.View("Error");
}
var model = new AdminArchivedModels
{
Id = user.Id,
FullName = user.FullName
};
return this.View(model);
}
[HttpPost]
public async Task<ActionResult> EditArchived(AdminArchivedModels model)
{
if (!ModelState.IsValid)
{
return this.View(model);
}
var user = await this.UserManager.FindByIdAsync(model.Id);
if (user == null)
{
return this.View("Error");
}
if (user.Archived == true)
{
user.Archived = false;
}
else
{
user.Archived = true;
}
var result = await this.UserManager.UpdateAsync(user);
if (!result.Succeeded)
{
// Do something with error here
return this.View(model);
}
// Add confirmation message here
return this.RedirectToAction("Index");
}
}
AdminArchivedModels
public class AdminArchivedModels
{
public string Id { get; set; }
public string FullName { get; set; }
[Required]
[Display(Name = "Archived")]
public bool Archived { get; set; }
}
AdminIndexModels
public class AdminIndexModels
{
public AdminIndexModels()
{
this.Users = new List<ApplicationUser>();
}
public List<ApplicationUser> Users { get; set; }
}
AdminNameModels
public class AdminNameModels
{
public string Id { get; set; }
public string FullName { get; set; }
[Required]
[Display(Name = "First Name")]
public string FirstName { get; set; }
[Required]
[Display(Name = "Last Name")]
public string LastName { get; set; }
}
AdminPasswordModels
public class AdminPasswordModels
{
public string Id { get; set; }
public string FullName { get; set; }
[Required]
[Display(Name = "New Password")]
public string NewPassword { get; set; }
}
とビュー
インデックス
@model YOURPROJECT.Models.AdminIndexModels
@{
ViewBag.Title = "Index";
}
<h2>Users List</h2>
<table class="table table-striped table-hover">
<tr>
<th>
User Name
</th>
<th>
Full Name
</th>
<th>
Archived Status
</th>
<th>
Actions
</th>
</tr>
@foreach (var user in Model.Users)
{
<tr>
<td>
@user.UserName
</td>
<td>
@user.FullName
</td>
<td>
@user.Archived
</td>
<td>
@Html.ActionLink("Edit Name", "EditName", new { id = user.Id }) |
@Html.ActionLink("Edit Password", "EditPassword", new { id = user.Id }) |
@Html.ActionLink("Edit Archived", "EditArchived", new { id = user.Id })
</td>
</tr>
}
</table>
<br />
EditArchived
@model YOURPROJECT.Models.AdminArchivedModels
@{
ViewBag.Title = "Edit Archived - " + Model.FullName;
}
<h2>Edit Password - @Model.FullName</h2>
@using (Html.BeginForm("EditArchived", "Admin", FormMethod.Post))
{
@Html.HiddenFor(m => m.Id)
<div class="row">
<div class="col-md-2">
@Html.LabelFor(m => m.Archived)
</div>
<div class="col-md-2">
@Html.EditorFor(m => m.Archived)
@Html.ValidationMessageFor(m => m.Archived, "", new { @class = "text-danger" })
</div>
</div>
<br />
<input type="submit" class="btn btn-primary" value="Submit" />
}
<br />
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
ためEditName
@model YOURPROJECT.Models.AdminNameModels
@{
ViewBag.Title = "Edit Name - " + Model.FullName;
}
<h2>Edit Name - @Model.FullName</h2>
@using (Html.BeginForm("EditName", "Admin", FormMethod.Post))
{
@Html.HiddenFor(m => m.Id)
<div class="row">
<div class="col-md-2">
@Html.LabelFor(m => m.FirstName)
</div>
<div class="col-md-2">
@Html.EditorFor(m => m.FirstName)
@Html.ValidationMessageFor(m => m.FirstName, "", new { @class = "text-danger" })
</div>
</div>
<br />
<div class="row">
<div class="col-md-2">
@Html.LabelFor(m => m.LastName)
</div>
<div class="col-md-2">
@Html.EditorFor(m => m.LastName)
@Html.ValidationMessageFor(m => m.LastName, "", new { @class = "text-danger" })
</div>
</div>
<br />
<input type="submit" class="btn btn-primary" value="Submit" />
}
<br />
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
EditPassword
@model YOURPROJECT.Models.AdminPasswordModels
@{
ViewBag.Title = "Edit Password - " + Model.FullName;
}
<h2>Edit Password - @Model.FullName</h2>
@using (Html.BeginForm("EditPassword", "Admin", FormMethod.Post))
{
@Html.HiddenFor(m => m.Id)
<div class="row">
<div class="col-md-2">
@Html.LabelFor(m => m.NewPassword)
</div>
<div class="col-md-2">
@Html.PasswordFor(m => m.NewPassword)
@Html.ValidationMessageFor(m => m.NewPassword, "", new { @class = "text-danger" })
</div>
</div>
<br />
<input type="submit" class="btn btn-primary" value="Submit" />
}
<br />
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
このコードの目的は、編集用パスワードコードは、管理者ユーザーが
編集名コードはに管理者を許可リストからパスワードすべてのユーザーを編集することができます
三つのことを達成しますユーザーの登録名を変更する
アーカイブされたコードはあなたにとっては役に立たないかもしれませんが、ユーザーがログインするのを防ぐために使用します。
こんにちはKezanub、こんにちはKezanub、私はすでに、この質問を忘れてしまったときにこのプロジェクトを終了しました。あなたが投稿したものは、これを行うための理想的な方法のようです。私は明日それをテストし、あなたに戻ってきます。 – Bob