2
我試圖使用的SelectList我的意見之一,它只是不正確填充。它獲得了適當數量的條目(4),但它們都是System.Web.Mvc.SelectListItem
。我在代碼上啓動了調試器,發現有一些奇怪的現象。我一定在做錯事,但我不太明白。從視圖模型我的ASP.NET MVC SelectList有什麼問題?
代碼:
public SelectList DeviceTypes {get; private set;}
....
var device_types = DataTableHelpers.DeviceTypes();
IEnumerable<SelectListItem> sl = device_types.Select(
dt => new SelectListItem { Selected = (dt.DeviceType == 1),
Text = dt.Description,
Value = dt.DeviceType.ToString() }).ToList();
DeviceTypes = new SelectList(sl);
和代碼視圖:
<%= Html.DropDownList("Type",Model.DeviceTypes) %>
所以,當我在調試器看看這個,對SL的IEnumerable是越來越正確建立。我可以看到裏面的所有4個元素,具有正確的Text和Value屬性值。但是,一旦我調用SelectList構造函數,如果我展開它所包含的IEnumerable,則會看到它有4個條目,但其中的所有數據都已丟失。文本設置爲System.Web.Mvc.SelectListItem
,和值爲null
。
我試着將ToList()
調用更改爲ToArray()
,並將其完全刪除。這並沒有改變行爲。
我在這裏做錯了什麼?
沒錯,這做到了,謝謝。我想我也明白我現在做錯了什麼。 – 2010-01-17 19:28:26
這是一個老舊的函數式答案,但請**,絕對不要**直接向視圖中寫入Linq請求!好的做法是聲明一個'INT SelectedValue'和模型中的一個'的IEnumerable <> YourEnumerableProperty'屬性,然後在控制器填充它,最後用'@ Html.DropDownListFor(M => m.SelectedValue,新的SelectList( Model.YourEnumerableProperty,「價值」,「文本」)'意見是不應該持有邏輯企業。 – AlexB 2017-12-11 21:29:39
視圖可以包含邏輯,它只是需要顯示邏輯,而不是業務邏輯。 – 2017-12-21 18:50:42