2017-05-13 4 views
2

Dynamisch ich sollte Dropdown-Liste laden und den ausgewählten Wert anzeigen. aber das Dropdown-Menü wurde erfolgreich geladen, aber der Standardwert ist nicht ausgewählt.Wie dynamisch setzen Sie den Standardwert für DropDownListFor asp.net mvc4

@ gt.PlantId - integer, PlantId -integer

 @foreach (var gt in Model.RoleList) 
     { 
      <tr> 
       <td>@Html.DropDownListFor(Model => Model.Plants,new SelectList(Model.Plants,"PlantId","PlantName", @gt.PlantId))</td> 
       <td>@gt.PlantId</td> 
       <td>@gt.RoleId</td> 
       @using (Ajax.BeginForm("deletedet", new AjaxOptions() { UpdateTargetId = "Edit-User", AllowCache = true, InsertionMode = InsertionMode.ReplaceWith })) 
       { 
        @Html.Hidden("userId", @gt.UserId) 

       <td><p data-placement="top" data-toggle="tooltip" title="Delete"><button class="btn btn-danger btn-xs" data-title="Delete" data-toggle="modal" data-target="#myTable"><span class="glyphicon glyphicon-trash"></span></button></p></td> 
       } 
      </tr> 

     } 
+0

'@ Html.DropDownListFor (m = > m.Genre, neue Se lectList (Model.Genres, "Id", "Name"), "DEFAULT VALUE GOES HERE", neues {@class = "form-control"}) ' – Unbreakable

+0

Versuchen Sie oben und nehmen Sie entsprechende Änderungen vor. "DEAFULT VALUE GOES HERE" Ersetzen Sie es mit dem, was Sie als Standard wünschen – Unbreakable

+0

Hallo unzerbrechlich, vielen Dank. basierend auf dem Wert muss ich den Text anzeigen. Wenn ich "DEFAULT VALUE GOES HERE" in dieser ID eintrage, bekomme ich einen Fehler, den ich nicht in String umwandeln kann: – SENA

Antwort

1

Wenn @Html.DropDownListFor ,@Html.HidenFor, @Html.TextBoxFor foreach-Schleife oder anderes Eingabeelement nie arbeiten, weil in Rasierapparat input/select/textarea schafft ein einzigartiges html name/id Attribut. Aber mit foreach kann dies nicht tun. verwenden Sie also for for loop oder EditorTemplates statt foreach.

Andernfalls können Sie die HTML generieren, aber Sie können nicht Liste der Artikel in Ihrer Aktion senden.

Beispiel:

Modell:

public class UserEditorViewModel 
    { 
     public string UserId { get; set; } 
     public string RoleId { get; set; } 
     public string UserName { get; set; } 
     public IEnumerable<Roles> Roles { get; set; } 
    } 

EditorTemplates Notwendigkeit zu bestehen entweder Views/Shared/EditorTemplates oder Views/ControllerName/EditorTemplates und den Namen der Ansicht (Standard) der Name der sollte object(Or Name of the Model) Sie wollen um es als Vorlage zu verwenden.

Editortemplates:

Ansichten/Shared/EditorTemplates/UserEditorViewModel.cshtml

@model UserEditorViewModel 

<div class="form-group"> 
    @Html.DisplayNameFor(m => m.UserId) 
    @Html.EditorFor(m => m.UserId) 
</div> 
<div class="form-group"> 
    @Html.DisplayNameFor(m => m.UserName) 
    @Html.EditorFor(m => m.UserName) 
</div> 
<div class="form-group"> 
    @Html.DisplayNameFor(m => m.RoleId) 
    @Html.DropDownListFor(m => m.RoleId, new SelectList(Model.Roles,"RoleId","RoleName",Model.RoleId)) 
</div> 

Ausblick:

@model UserEditorViewModel 

@using (Html.BeginForm("--Your Action--", "--Your Controller--"))//Or use Ajax.BeginForm if you need 
{ 
    @Html.EditorForModel() 
    <input type="submit" value="Save" /> 
} 
+0

Hallo Freund, vielen Dank. Es funktioniert ein weiteres Problem, ich möchte den Wert aller Dropdown-Liste speichern. Zum Beispiel ein Benutzer wird es mehrere Rollen und Abteilungen Dropdown-Liste Ich möchte alle Dropdown-Werte speichern. kannst du mir bitte helfen. – SENA

+0

Einfache Ihre Aktion erhalten so etwas wie 'ActionName (List -Modell)'. @ SENA – Ashiquzzaman

Verwandte Themen