2016-11-18 3 views
1

Ich erstellte eine Ansicht, die ein Modell erstellt. Modell hat Enum Feld wie folgt aus:.net Kern Pass Enum in Ansicht

public ProjectType ProjectType { get; set; } 
public enum ProjectType : int 
{ 
    type1= 1, 
    type2 = 2, 
    type3 = 3, 
    other = 4 
} 

Und im Blick, ich zeige es wie folgt aus:

<div class="form-group"> 
    @Html.LabelFor(m => m.ProjectType, new { @class = "col-md-2 control-label" }) 
    <div class="col-md-10"> 
     @Html.DropDownListFor(m => m.ProjectType,Model.ProjectType, new { @class = "form-control" }) 
     @Html.ValidationMessageFor(m => m.ProjectType) 
    </div> 
</div> 

Als ich bin versucht, diese Ansicht zu erreichen, erhalte ich eine Fehlermeldung:

There is no argument given that corresponds to the required formal parameter 'htmlAttributes' of 'IHtmlHelper<Project>.DropDownListFor<TResult>(Expression<Func<Project, TResult>>, IEnumerable<SelectListItem>, string, object)'

ich habe versucht, dieses Problem zu beheben, von Html-Helfer zu schaffen, aber ich brauche System.Web.Mvc zu verwenden, aber ich kann‘Tadd es in .net Kernprojekt gibt es eine andere Lösung für dieses?

Antwort

1

Ich denke, Sie können eine Enum nicht direkt an eine Dropdown-Liste binden.

versuchen Sie, ein Hilfskonstrukt wie hinzuzufügen, auf dem Sie die Dropdownliste binden können.

public class ProjectViewModel 
{ 
    public ProjectViewModel() 
    { 
     ProjectTypes = new List<SelectListItem>(); 
    } 

    public string SelectedProject { get; set; } 
    public List<SelectListItem> ProjectTypes { get; set; } 
} 

Sie können diese wie in der Ansicht verwenden:

DropDownList

Enum-Klasse bleibt gleich

public enum ProjectType : int 
{ 
    type1 = 1, 
    type2 = 2, 
    type3 = 3, 
    other = 4 
} 
:

@model ProjectViewModel 

<select asp-for="SelectedProject" asp-items="@(Model.ProjectTypes)"> 
    <option>Please select one</option> 
</select> 

Dies zu diesem Ergebnis führen sollte