Ich versuche herauszufinden, wo ich falsch liege.
Ich habe eine Admin Rolle in der Startup.cs konfigurieren Funktion erstellt. Ich habe eine einfache Webseite hinzugefügt, die korrekt funktioniert und die Benutzerliste anzeigt.Benutzer Admin mit MVC6
@model IEnumerable<MyProject.ViewModels.Account.UserIndexViewModel>
@{
ViewData["Title"] = "UsersList";
}
<h2>Users List</h2>
<p>
<a asp-action="Create">Create New</a>
</p>
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.UserName)
</th>
<th>
@Html.DisplayNameFor(model => model.Email)
</th>
<th></th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.UserName)
</td>
<td>
@Html.DisplayFor(modelItem => item.Email)
</td>
<td>
<a asp-action="UserDetails" asp-route-id="@item.UserName">Details</a> |
</td>
</tr>
}
</table>
Wenn ich versuche, um die Details des Benutzers zu erhalten, erzeugt die cshtml Seite korrekt die Adresse Account/Userdetails/NameSurname und die Userdetails Funktion im AccountController.cs aufgerufen:
[HttpGet]
[Authorize(Roles = "admin")]
public IActionResult UserDetails(string userName)
{
return View();
}
Das Problem ist, dass userName keine Zeichenfolge ist. Ich habe versucht, das Argument als Objekt zu definieren, aber ich kann im Debuggen nicht sehen, um welche Art von Objekt es sich handelt.