2

私は MVC プロジェクトを作成しており、ビューに razor を使用しています。ドロップダウンリストで感じる少し基本的な問題に固執しています。前のページのテキスト ボックスから入力したいドロップダウン リストがあるので、それをオブジェクトに入れます。リストにデータを入力していますが、完全に動的ではありません。

public class FormInformation
{
    public IEnumerable<SelectListItem> ListItems { get; set; }
    public string[] SelectedItems { get; set; }
    public ServiceObject serviceObject { get; set; }
}

次のように選択リストを作成します。

 private SelectList CreateSelectListItems(int counter, List<string> clients)
    {
        if (counter == 1)
        {
            return new SelectList(new[]
                    {
                        new {id = 1, Name = ""},
                        new {id = 2, Name = clients[0]},
                    }, "Id", "Name");
        }
        if (counter == 2)
        {
            return new SelectList(new[]
                    {
                        new {id = 1, Name = ""},
                        new {id = 2, Name = clients[0]},
                        new {id = 3, Name = clients[1]},
                    }, "Id", "Name");
        }
        if (counter == 3)
        {
            return new SelectList(new[]
                    {
                        new {id = 1, Name = ""},
                        new {id = 2, Name = clients[0]},
                        new {id = 3, Name = clients[1]},
                        new {id = 4, Name = clients[2]},
                    }, "Id", "Name");
        }
        else
        {
            return new SelectList(new[]
                    {
                        new {id = 1, Name = ""},
                        new {id = 2, Name = clients[0]},
                        new {id = 3, Name = clients[1]},
                        new {id = 4, Name = clients[2]},
                        new {id = 5, Name = clients[3]},
                    }, "Id", "Name");
        }
    }
}

ただし、これを完全に動的にする必要があります。これは 4 つの可能性しか許しません。これについて私が理解していないのは小さなことだと私は知っています。したがって、クライアントが 3 つある場合もあれば、7 つある場合もあります。すべてのクライアントを繰り返し処理し、カウンターを必要とせずに追加するにはどうすればよいですか? どうもありがとうございました。

4

1 に答える 1

2

Linq to Objects .Select()メソッドのオーバーロードを使用して、シーケンスを反復しながら要素のインデックスを指定することもできます。

private SelectList CreateSelectListItems(List<string> clients)
{
    clients.Insert(0, "");
    var items = clients.Select((el, index)=> new {id = index + 1, Name = el})
                       .ToList();
    return new SelectList(items, "Id", "Name");
}
于 2013-11-26T15:22:58.720 に答える