0

我有一个 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" }) 如何获取文本?

4

1 回答 1

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) 的映射的位置,并在显示透视图方面完成了您需要的工作。

于 2012-07-26T21:31:29.157 回答