2016-11-18 72 views
1

我創建了一個視圖,它創建了一個模型。型號有枚舉領域,像這樣:.net核心傳遞枚舉查看

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

,並考慮,我展示它是這樣的:

<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> 

我,'M試圖達到這個觀點,我得到一個錯誤:

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)'

我試圖解決這個問題,通過創建HTML的幫手,但我需要使用System.Web.Mvc,但我可以」塔德成.NET的核心項目 是否有任何其他的解決方案呢?

回答

1

我認爲你不能直接將枚舉綁定到下拉列表。

嘗試添加一個幫助器構造,如List<SelectListItem>,您可以綁定下拉列表。

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

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

您可以在視圖中使用此類似:

@model ProjectViewModel 

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

這應該導致這樣的結果:

DropDownList

Enum類保持不變

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