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;
        }
    }

1 つのフォームにドロップダウンを使用

@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

値は、保存のためにフォームから返される唯一のものです。値をテキストに変換するには、関数/辞書を作成する必要があります。または、テキストと値を同じにして、後で取得できるようにバックエンド システムに保存します。

考えられる解決策の 1 つは、次のとおりです。

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) へのマッピングを定義する 1 つの場所が提供されるだけでなく、表示のパースペクティブに関する限り、必要なものが達成されます。

于 2012-07-26T21:31:29.157 に答える