2012-01-18 82 views
0

嘿朋友我在我的mvc 3項目中使用下拉列表。這裏用戶選擇其中一個選項並保存。當他/她重新瀏覽頁面時,我必須將最初保存的值作爲選定值。實際上,我正在根據需要使用自定義html助手來完成此操作。但我遇到了問題。我這樣做是:在mvc 3下拉列表3

else if (question_type == 7) 
     { 
      EAI.DAL.EaiEntities entities = new DAL.EaiEntities(); 
      QuestionnaireRepository repository = new QuestionnaireRepository(entities); 
      SelectList typesList = repository.PopDdlList(qid);     


      output.Append(helper.Label(questiontext)); 
      if (answer == "") 
      { 
       output.Append(helper.DropDownList("ddl" + question_id, typesList, "-- select type----)); 

      } 
      else 
      { 
       output.Append(helper.DropDownList("ddl" + question_id, typesList, answer)); 

      } 


      return helper.Raw(output.ToString()); 
     } 

其實上面的代碼將呈現從數據庫中選擇的價值,但它實際上取代了「 - 選擇類型---」。所以,保存一次後,如果我訪問相同的頁面並保存頁面比我可以在Formcollection中獲得空值。

所以,請建議做適當方式這

回答

1

我通常在我的模型中添加一些屬性:

int SelectedCategory { get; set; } 

IEnumerable<SelectListItem> Categories { get; private set; } 

,然後在我的模型構造函數加載數據:

ProductService productService = new ProductService(); 

this.Categories = 
    productService.GetCategories() 
     .Select(c => new SelectListItem() { Text = c.Name, Id = c.Id.ToString() }); 

this.Categories.InsertAt(0, new SelectListItem() { Text = "--- Please Select ---", value = "" }); 

然後在我的剃刀標記做類似:

@Html.DropDownListFor(m => m.SelectedCategory, Model.Categories) 

這應該以標準MVC方式自動連線。希望這可以幫助。