2012-07-26 50 views
0

我有一個IEnumerablemvc4 - 自IEnumerable顯示文字,不珍惜

public static IEnumerable<SelectListItem> getDefaultCraft 
    { 
     get 
     { 
      List<SelectListItem> defaultCrafts = new List<SelectListItem>(); 
      defaultCrafts.Add(new SelectListItem() { Text = "BOTTLEWATCH", Value = "1" }); 
      defaultCrafts.Add(new SelectListItem() { Text = "CLERK", Value = "2" }); 
      defaultCrafts.Add(new SelectListItem() { Text = "EXPEDITOR", Value = "4" }); 
      defaultCrafts.Add(new SelectListItem() { Text = "CRANE OPERATOR", Value = "3" }); 
      defaultCrafts.Add(new SelectListItem() { Text = "FIELD ACCOUNTANT", Value = "5" }); 
      defaultCrafts.Add(new SelectListItem() { Text = "FOREMAN – CRANE/RIGG", Value = "6" }); 
      defaultCrafts.Add(new SelectListItem() { Text = "WELDER", Value = "7" }); 
      return defaultCrafts; 
     } 
    } 

與下拉一種形式

@Html.DropDownListFor(q1 => q1.positionAppliedFor, ORCA.Models.lookUps.getDefaultCraft) 

另一種形式中,我想顯示的文本上。 這將顯示值@Html.Label("Position", cf.positionAppliedFor, new { style = "width:3in;display:inline-block" })如何獲取文本?

回答

0

該值是唯一從表單保存後發回的值。您需要創建一個函數/字典將該值轉換回文本。或者讓文本和值相同並將其存儲在後端系統中供以後檢索。

一個潛在的解決方案是以下幾點:

public static string GetDefaultCraftByValue(int id){ 
switch(id){ 
    case 1: 
    return "BOTTLEWATCH"; 
    case 2: 
    return "CREEK"; 
    //etc.... 
} 
} 

然後在您定義的其他功能,您可以更新這是下面

public static IEnumerable<SelectListItem> getDefaultCraft 
    { 
     get 
     { 
      List<SelectListItem> defaultCrafts = new List<SelectListItem>(); 
      defaultCrafts.Add(new SelectListItem() { Text = GetDefaultCraftByValue(1), Value = "1" }); 
      defaultCrafts.Add(new SelectListItem() { Text = GetDefaultCraftByValue(2), Value = "2" }); 
      defaultCrafts.Add(new SelectListItem() { Text = GetDefaultCraftByValue(3), Value = "4" }); 
      defaultCrafts.Add(new SelectListItem() { Text = GetDefaultCraftByValue(4), Value = "3" }); 
      defaultCrafts.Add(new SelectListItem() { Text = GetDefaultCraftByValue(5), Value = "5" }); 
      defaultCrafts.Add(new SelectListItem() { Text = GetDefaultCraftByValue(6), Value = "6" }); 
      defaultCrafts.Add(new SelectListItem() { Text = GetDefaultCraftByValue(7), Value = "7" }); 
      return defaultCrafts; 
     } 
    } 

最後,在您的視圖(或徘徊無論你填充你的視圖模型)

@Html.Label("Position", GetDefaultCraftByValue(cf.positionAppliedFor), new { style = "width:3in;display:inline-block" }) 

這給你一個地方,德從數值到文本(DRY)的映射都被罰款,並且就顯示角度而言,您完成了所需的任務。