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