2012-11-30 57 views
1

在我看來,我用一個列表作爲我的模型和各列表項的類型爲模型的,所以它看起來是這樣的:使用DropDownListFor與模型

@model IEnumerable<UserManager.Models.vw_UserManager_Model> 

,我通過這個列表試圖環和一個特定的屬性添加到DropDownListFor:

@for (int i = 0; i < Model.Count(); i++) 
{ 
    Html.DropDownListFor(model => model.ElementAt(i).module, new SelectList(Model, Model.ElementAt(i).module)); 
} 

但是當我這樣做不會使我的網頁上dropdownmenu。

Image of my list in locals

有人能幫忙嗎?

回答

2

您無法渲染模型的下拉列表,因爲無法在下拉菜單中完整地表示模型。 ASP.NET應該呈現什麼?

你可以做什麼,如果你想從列表中選擇一個模型是運行列表中的LINQ Select查詢,從而創建一個IEnumerable<SelectListItem>這樣的:

var selectList = Model 
    .Select(x => new SelectListItem 
    { 
     Name = x.module_name, 
     Value = x.module 
    }); 

我試圖採取來自您發佈的屏幕截圖的值。道歉,如果我犯了一個錯誤。你明白了......

這段代碼做的是循環你的對象類型集合(Model.Select)並返回一個集合SelectListItem。如果您對LINQ不熟悉,您需要將Select視爲轉換功能。它需要一個集合,併爲每個元素轉換成其他東西並返回結果。在這裏,它需要Model集合的每個元素並創建一個SelectListItem。然後它返回一個IEnumerable<SelectListItem>

來渲染頁面的列表中,您執行以下操作:

@Html.DropDownListFor(Model.MyValue, selectList) 

...其中Model.MyValue是接收選定值的變量(假設值,modelstring,這它似乎是)。

+0

我無法讓您的代碼正常工作。 selectList在當前上下文中不存在。我錯過了什麼嗎? –

+0

'selectList'是我在第一個代碼塊中定義的'IEnumerable 「!你需要先做一點。 –

+0

我感到困惑,因爲我是使用LINQ的新手。如果在我的視圖中,我的模型是一個列表集合,該集合中的每個項目都有一個對象,並且每個對象都具有帶有值的模塊屬性。我如何循環訪問這個集合並獲取模塊值? –

相關問題