4

私は ASP.Net MVC 3 Web アプリケーションを開発しています。最近、チェックボックス リストを表示する方法について質問を投稿しました。

ASP.Net MVC 3チェックボックスリストの値を取得する

RubbleFord と Darin Dimitrov の助けのおかげで、これを機能させることができました。

これは 1 つのチェックボックス リストではうまく機能しますが、同じビューに複数のチェックボックス リストを表示できるようにする必要があります。つまり、添付の画像を参照してください。

ここに画像の説明を入力

現在、1 つのリストを表示するために使用している ViewModel は次のとおりです。

public class ViewModelShiftSubSpecialties
{

    public ListItem specialtyName { get; set; }
    public IEnumerable<ViewModelCheckBox> SubSpecialityList { get; set; }

}

public class ViewModelCheckBox
{
    public string Id { get; set; }
    public string Name { get; set; }
    public bool Checked { get; set; }
}

そして、コントローラー内で、ViewModelShiftSubSpecialties を次のように入力します。

var subSpecialties = GetSubSpecialtiesForSpecialty(5);

        ViewModelShiftSubSpecialties viewModel = new ViewModelShiftSubSpecialties();

        var checkBoxList = new List<ViewModelCheckBox>();

        viewModel.specialtyName = _listService.GetListItemByID(5); //Medicine Specialty

        foreach (var item in subSpecialties)
        {
            ViewModelCheckBox chkBox = new ViewModelCheckBox { Id = item.subID.ToString(), Name = item.ListSub.description, Checked = false };
            checkBoxList.Add(chkBox);
        }

        viewModel.SubSpecialityList = checkBoxList;

私のビューでは、リスト名を表示し、エディター テンプレートを使用してチェックボックス リストを表示します。

<h3>@Model.specialtyName.description</h3>
@Html.EditorFor(m => m.SubSpecialityList)

ただし、上記のコードを1つのビューで複数のチェックボックスリストを操作する方法として、私は完全に困惑しています。これは可能ですか?

誰かがこれで私を助けてくれれば、本当に感謝しています。

ありがとう。

4

1 に答える 1

5

すでにすべての作業を完了しているようです。ViewModelCheckBox IEnumerable で正しく動作するエディター テンプレートが既にあります。エディター テンプレートは、同じデータ型に再利用できなければ役に立ちません。3回使用するだけです。ViewModel を拡張するだけ

public class ViewModelShiftSubSpecialties
{
    public ListItem specialtyName { get; set; } //Might need 3 of these
    public IEnumerable<ViewModelCheckBox> SubSpecialityList1 { get; set; }
    public IEnumerable<ViewModelCheckBox> SubSpecialityList2 { get; set; }
    public IEnumerable<ViewModelCheckBox> SubSpecialityList3 { get; set; }
}

コントローラーで 3 つすべてを作成します (そして、私が行ったよりも適切な名前を付けます)。

そして、あなたのビューで

@Html.EditorFor(m => m.SubSpecialityList1)
@Html.EditorFor(m => m.SubSpecialityList2)
@Html.EditorFor(m => m.SubSpecialityList3)

または、単一の専門名と を含むクラスを作成し、IEnumerable ViewModelCheckBoxViewModel にこの新しいクラスの IEnumerable を持たせることもできます。次に、この新しいクラスの新しいエディター テンプレートを作成します。リストのサイズが可変/変更される可能性がある場合、これは価値があると思います。それ以外の場合は、簡単な修正のために以前のソリューションを使用します。

public class ViewModelShiftSubSpecialties
{
    public class IEnumerable<SubSpecialty> { get; set; }
}

public class SubSpecialty
{
    public ListItem specialtyName { get; set; }
    public IEnumerable<ViewModelCheckBox> SubSpecialityList
}
于 2012-04-17T15:01:32.533 に答える