Html mvc4-显示ienumerable中的文本,而不是值

Html mvc4-显示ienumerable中的文本,而不是值,html,asp.net-mvc,ienumerable,asp.net-mvc-4,Html,Asp.net Mvc,Ienumerable,Asp.net Mvc 4,我有一本数不清的书 public static IEnumerable<SelectListItem> getDefaultCraft { get { List<SelectListItem> defaultCrafts = new List<SelectListItem>(); defaultCrafts.Add(new SelectListItem() { Text

我有一本数不清的书

 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.Label(“Position”,cf.positionAppliedFor,new{style=“width:3in;display:inline block”})
如何获取文本?

该值是从表单返回以进行保存的唯一内容。您需要创建一个函数/字典来将值转换回文本。或者让文本和值相同,并将其存储在后端系统中以供以后检索

一种可能的解决办法是:

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;
        }
    }
这为您提供了一个位置,用于定义从数值到文本(DRY)的映射,以及完成显示透视图所需的内容

 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" })