2010-11-11 99 views
1

我必須在這裏錯過簡單的東西。此代碼正在工作,我似乎無法弄清楚爲什麼它停止。如何讓Html.DropdownFor()選擇當前元素?

首先,我產生一個控制器中的選擇列表的是這樣的:

 // Select List 
     ViewData["FieldTypesList"] = new SelectList(
      genesisRepository.FieldTypes, "ftID", "ftName" 
      ); 

使用該選擇列表的視圖看起來是這樣的:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Genesis.Domain.Entities.Stream2FieldTypes>" %> 
    <%@ Import Namespace="Genesis.Domain.Entities" %>   
    <%: Html.DropDownListFor(
      model => model.FieldTypeID, 
      (SelectList)ViewData["FieldTypesList"] 
      )%> 
    <%:Model.FieldTypeID.ToString() %> 

但是......那個被生成的HTML顯示此:

<select id="Stream2FieldTypes_0_" name="Stream2FieldTypes[0]"><option value="1">Text Area</option> 
    <option value="2">Text Box</option> 
    <option value="3">Rich Text</option> 
    <option value="4">Image</option> 
    <option value="5">DateTime</option> 
    <option value="6">Decimal</option> 
    <option value="7">Integer</option> 
</select> 
3 <!--FYI: current value--> 

我完全缺少爲什麼視圖不呈現html選擇3(Rich Text)。

你們認爲我的思維過程有什麼問題嗎?

回答

1

感謝@hunter和@John_Hartstock用於指向選擇列表實例,而不是專注於DropDownListFor()方法。

我最終通過在視圖中構建選擇列表而不是在控制列表中解決了這個bug。對控制器進行編輯,以這樣的:

ViewData["FieldTypesList"] = genesisRepository.FieldTypes; 
// Returns IEnumerable of FieldTypes 

改變了看法,以這樣的:

<%: Html.DropDownListFor(
      model => model.FieldTypeID, 
      new SelectList((IEnumerable<FieldTypes>)ViewData["FieldTypesList"], 
      "ftID", 
      "ftName", 
      Model.FieldTypeID)) 
%> 

這完美的作品。

+1

解決了我遇到的問題,非常感謝! :) – 2010-11-13 02:26:20

1

你可以用的SelectList Constructor

ViewData["FieldTypesList"] = new SelectList(
     genesisRepository.FieldTypes, "ftID", "ftName" 
     new (ftID=3, ftName="Rich Text"); 
+0

我不認爲我可以使用這種語法。我上面展示的視圖實際上是編輯器模板的一部分,它使用EditorFor()顯示。最終,頁面上可能會有許多這些「FieldType」選擇框。這取決於哪個記錄被調用。我無法對控制器中選擇列表的值進行硬編碼,因爲該選擇列表在頁面上多次出現。 – quakkels 2010-11-11 17:32:16

2

過載處理它在你的控制器我想你忘了所選擇的值傳遞給構造

ViewData["FieldTypesList"] = new SelectList(
    genesisRepository.FieldTypes, "ftID", "ftName", myModel.FileTypeID) 
); 
+0

當我構建選擇列表時,我不知道選定的值是什麼。我向視圖發送一個視圖模型,同樣的選擇列表用於viewmodel中的多個元素。 – quakkels 2010-11-11 17:35:13

+0

此外,我認爲我的觀點中的行:'model => model.FieldTypeID'應該指定選擇值。 – quakkels 2010-11-11 17:37:42

+0

嘗試將FieldTypeID轉換爲int。 '(int)model.FieldTypeID'我猜這是一個枚舉? – hunter 2010-11-11 18:28:53

相關問題