-3

4つの値が含まれている汎用リストがあります。ジェネリックリストの値をインデックスで取得するにはどうすればよいですか?ジェネリックリストのすべての値を取得したいこれは私のコードです:

var Checked = (form.GetValues("assignChkBx")).ToList();     
string str = "";
for (int i = 0; i < Checked.Count; i++)
{
    str = str + Checked[i]. +",";
} 

このコードでは、チェックしたすべてのチェックボックスの値を取得しました。今、私はすべての値を取得したいと思います。どうすれば値を取得できますか?

4

1 に答える 1

3

一般的なリストについてのあなたの質問は非常に誤解を招くものであり、それはあなたの本当の問題とは何の関係もないのではないかと思います。

ビュー内でチェックボックスを生成した方法に応じて、可能かどうかが決まります。<input type="checkbox">チェックされていないチェックボックスのタグ値を直接使用してハードコーディングした場合、サーバーに送信されることはありません。これがHTMLチェックボックスの仕組みです。この場合、すべての値を取得することはできません。一方、Html.CheckBoxForヘルパーを使用してそれらを生成した場合、このヘルパーがすべての値を送信するために各チェックボックスに非表示のフィールドを追加することに気付くでしょう。ただし、このヘルパーはブール値で動作します。

したがって、2つのプロパティを含むビューモデルを作成することをお勧めします。1つは目的の値を保持し、もう1つはユーザーがビューでこの値を選択したかどうかを示すブールプロパティです。

public class ItemViewModel
{
    public string Value { get; set; }
    public bool Checked { get; set; }
}

次に、これらのアイテムのコレクションを含むビューモデルを作成します。

public class MyViewModel
{
    public ItemViewModel[] Items { get; set; }
}

これで、ビュー内でこれらの値を次のようにレンダリングできます。

@model MyViewModel
@using (Html.BeginForm())
{
    for ( var i = 0; i < Model.Items.Length; i++)
    {
        <div>
            @Html.CheckBoxFor(x => x.Items[i].Checked)
            @Html.HiddenFor(x => x.Items[i].Value)
        </div>
    }

    <button type="submit">OK</button>
}

そして最後に、このフォームが送信されるコントローラーアクション内で、すべての値を取得できるようになります。

[HttpPost]
public ActionResult SomeAction(MyViewModel model)
{
    foreach (var item in model.Items)
    {
        // here you could use item.Checked and item.Value
    }
    ...
}
于 2012-09-20T05:47:30.313 に答える