3

Entity Framework 4.1 を使用して ASP.Net MVC 3 Web アプリケーションを開発しています。CheckBoxList の表示に問題があります。説明させてください。

私は2つのViewModelを持っています

public class ViewModelShiftSubSpecialties
{
    public IEnumerable<ViewModelCheckBox> SpecialtyList { get; set; }
}

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

コントローラーで、ViewModels にデータを入力します

        IList<RelationshipGradeSub> gradeSubSpecialties = GetSubSpecialtiesForGrade(firstShiftGrade.gradeID);

        ViewModelShiftSubSpecialties viewModel = new ViewModelShiftSubSpecialties();

        var checkBoxList = new List<ViewModelCheckBox>();

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

        viewModel.SpecialtyList = checkBoxList;

        return View(viewModel);

チェックボックスを表示するための EditorTemplate として使用される部分ビューもあります

@Html.HiddenFor(x => x.Id)        
@Html.CheckBoxFor(x => x.Checked)
@Html.LabelFor(x => x.Name, Model.Name)<br />

次に、ビューで Model.Specialty をフィルター処理し、項目をその専門性に基づいて 3 つのチェックボックス リストに分類しようとします。

@foreach (var sub in Model.SpecialtyList)
{
if (sub.Specialty.Equals("Medicine"))
{
    @Html.EditorFor(m => m.SpecialtyList)
}
else if (sub.Specialty.Equals("Surgery"))
{
    @Html.EditorFor(m => m.SpecialtyList)
}
else if (sub.Specialty.Equals("Pathology"))
{
    @Html.EditorFor(m => m.SpecialtyList)
}

}

しかし、これはまったく機能していないようです。これにより、1番目または2番目のチェックボックスリストには何も表示されず、3番目のチェックボックスリストにはすべてのリスト項目が表示されます。基本的に私が達成しようとしているのはこのようなものです

ここに画像の説明を入力

誰かがこれを機能させるための指針を教えてもらえますか?

ありがとう。

4

1 に答える 1

2

チェックボックスを表示するための EditorTemplate はタイプ用だと思いますViewModelCheckBox

@Html.HiddenFor(x => x.Id)        
@Html.CheckBoxFor(x => x.Checked)
@Html.LabelFor(x => x.Name, Model.Name)<br />

その場合、 をList<ViewModelCheckBox>使用するときに送信し@Html.EditorFor(m => m.SpecialtyList)ていますが、送信する必要があるのは ViewModelCheckBox:

@Html.EditorFor(m => sub)

私はあなたを正しく理解したことを願っています。

于 2012-04-18T11:10:04.037 に答える