2017-11-22 7 views
0

Ich möchte Benutzerprofil zu meiner _EditUser Ansicht anzeigen und dann Benutzerprofil wie Benutzerrolle bearbeiten .. Name und E-Mail.Wie Benutzerprofil wie Benutzerrolle in Asp.Net Mvc bearbeiten?

Aber wenn es um die Benutzerrolle geht, stürzt es ab. Ich erhalte 500 (Internal Server Error) Es stürzt sich hier:

model.ApplicationRoleId = RoleManager.Roles.Single(r => r.Name == UserManager.GetRoles(id).Single()).Id; 

Das ist mein mein EditUserview ist

public class EditUserViewModel 
    { 
     public string Id { get; set; } 
     public string Name { get; set; } 
     public string Email { get; set; } 
     public List<SelectListItem> ApplicationRoles { get; set; } 
     public string ApplicationRoleId { get; set; } 
    } 

Und das ist mein editUser Aktion

[HttpGet] 
public async Task<IActionResult> EditUser(string id) 
{ 
    EditUserViewModel model = new EditUserViewModel(); 
    model.ApplicationRoles = roleManager.Roles.Select(r => new SelectListItem 
    { 
     Text = r.Name, 
     Value = r.Id 
    }).ToList(); 



    if (!String.IsNullOrEmpty(id)) 
    { 
     ApplicationUser user = await userManager.FindByIdAsync(id); 
     if (user != null) 
     { 
      model.Name = user.Name; 
      model.Email = user.Email; 
      model.ApplicationRoleId = RoleManager.Roles.Single(r => r.Name == UserManager.GetRoles(id).Single()).Id; // Here crashing .. I don't know why.. Server 500 error 
      ViewBag.RoleId = new SelectList(RoleManager.Roles, "Id", "Name", model.ApplicationRoleId); 
     } 
    } 
    return PartialView("_EditUser", model); 
} 

Meiner Ansicht Seite "_EditUser.cshtml" Meine Dropdownliste der Benutzerrolle sieht so aus

<div class="form-group"> 
       @Html.Label("Role", htmlAttributes: new { @class = "control-label col-md-6" }) 
       <div class="col-md-12" > 
        @Html.DropDownList("RoleId", null, htmlAttributes: new { @class = "form-control" }) 
        @Html.ValidationMessageFor(model => model.ApplicationRoles, "", new { @class = "text-danger" }) 
       </div> 
      </div> 

/Vielen Dank im Voraus

+0

Die 'Single' Methode schrieb wird eine Ausnahme auslösen, wenn die Auflistung (auf der Sie die Methode aufrufen) leer ist oder mehr als ein Element zurückgibt, das der Bedingung entspricht. – Shyju

+0

@Shyju Können Sie mir bitte weiter Antwort mit Lösung geben, b/c es ist das zweite Mal, dass ich frage. Ich habe genug verstreut aber konnte es nicht lösen. –

+0

Bitte geben Sie den Fehler nach 500 (Interner Serverfehler) – DaniDev

Antwort

0

ich so tat, wie @Shyju in meiner alten Frage

var role = await UserManager.GetRolesAsync(user.Id); 
        var existingRole = role.First(); 
if (existingRole != null) 
    { 
string existingRoleId = RoleManager.Roles.Single(r => r.Name == existingRole).Id; 
model.ApplicationRoleId = existingRoleId; 
..... and so on .... 

}

Jungs und @Shyju Danke

Verwandte Themen