2017-07-04 1 views
0

Ich habe ein paar Benutzer mit Rollen in meiner MVC 5-Anwendung erstellt. Ich habe ein Ticket-Modell, das grundlegende Ticket-Informationen enthält. Aber jetzt möchte ich eine Eigenschaft mit dem Namen "Assigned To" zu diesem Ticketmodell hinzufügen und diesen Eigenschaftswert den verfügbaren Benutzern zuweisen.So erstellen Sie eine Dropdown-Liste aller Benutzer in MVC5

Aus meiner Sicht möchte ich eine Dropdown-Liste aller verfügbaren Benutzer haben, damit ich einen Benutzer auswählen kann, dem das Ticket zugewiesen werden soll. Wie kann ich diese Eigenschaft in meinem Modell erstellen und in meiner Ansicht eine Dropdown-Liste erstellen? Dank

Update 1: in meinem Index() Methode, die ich bereits über ein Actionmodell zurückzukehren und seine sehen wie folgt aus:

Models.Application model = db.Applications 
      .Include("Source") 
      .Include(.....) 
      .SingleOrDefault(m => m.Id == id); 

     if (model == null) 
     { 
      return new HttpNotFoundResult(); 
     } 

     return View(model); 

Wie kann ich übernehmen Sie den Code in das vorschlagen Index() Methode mit was ich schon habe?

Antwort

0

Fragen Sie Ihre Datenbank ab, um die Liste der Benutzer zu erhalten, und transponieren Sie diese in Ihr Ansichtsmodell. Stellen Sie sicher, dass Sie die User-Klasse nicht direkt aus der DB übergeben, da Sie das Passwort, Salz usw. an den Browser senden. Sie sollten es von einer DB-Form in eine VM-Form transponieren, die nur die für die Ansicht erforderlichen Felder enthält.

Ansichtsmodell:

class MyViewModel 
{ 
    public IEnumerable<User> Users { get; set; } 
    public string User { get; set;} 
} 

[HttpGet] 
public ActionResult Index() 
{ 
    var viewModel = new MyViewModel() 
    { 
     Users = <map users from db> 
    }; 

    return this.View(viewModel); 
} 

Ausblick:

<div class="form-group"> 
    @Html.LabelFor(m => m.User) 
    <div class="col-md-10"> 
     @Html.DropDownListFor(x => x.User, new SelectList(Model.Users, "Id", "Name"), new { @class = "form-control" }) 
     @Html.ValidationMessageFor(m => m.OriginStation, "", new { @class = "text-danger" }) 
    </div> 
</div> 

Dann Formular Postback-Handler:

[HttpPost]  
public ActionResult Index(MyViewModel viewModel) 
{ 
    viewModel.User now contains the id of the user 
} 
+0

Hallo, in meinem Index() Methode, die ich bereits über ein Action Modell müssen zurück zur Ansicht. Wie kann ich den Code, den Sie in der Index() -Methode vorschlagen, mit dem, was ich bereits habe, integrieren? Bitte sehen Sie meine ** Update 1 ** in der Frage Post. – CB4

+0

Der Schlüssel zu diesem Problem besteht darin, sicherzustellen, dass Sie eine Liste von Benutzern in Ihrem Ansichtsmodell und den '' neuen SelectList''-Teil von DropDownListFor haben. Kann ich annehmen, dass Ihre Models.Application eine Liste von Benutzern enthält? – Neil

+0

Nein. My ** Models.Application ** enthält nur grundlegende Ticket-Informationen. Mein Problem ist, ich weiß nicht, wie man eine Liste von Benutzern zu diesem Modell hinzufügt. – CB4

Verwandte Themen