1

次のモデルから値を取得し、適切なチェックボックスをオンにしてチェックボックスのリストを表示する方法を知りたいです。単純化のために単純化されたモデル。

モデル_

 public class Project
 {
    public int ProjectID { get; set; }
    public string Title { get; set; }
    public virtual ICollection<Characteristic> Characteristic { get; set; }
 }
 public class Characteristic
 {
    public int CharacteristicID { get; set; }
    public string CharacteristicName { get; set; }

    public virtual ICollection<Project> Project { get; set; }
 }
 public class ProjectCharacteristic
 {
    public int ID { get; set; }
    public int ProjectID { get; set; }
    public int CharacteristicID { get; set; }

    public Project Project { get; set; }
    public Characteristic Characteristic { get; set; }
 }

ビューモデル

public class ProjectEditIndexData
{
    public Project Project{ get; set; }
    public List<Characteristic> Chars { get; set; }
}

コントローラー_

 public ActionResult Edit(int id = 0)
    {
        ProjectEditIndexData project = new ProjectEditIndexData();
        project.Project = db.Projects.Find(id);
        project.Chars = db.Characteristics.ToList();
        return View(project);
    }

言い換える と、プロジェクトで指定されたすべての特性のリストをチェックボックスとして取得するにはどうすればよいですか?

4

1 に答える 1

2

ヘルパーを機能させることができなかったので、代わりに foreach ループを作成して、ルックアップ テーブルに値が存在するかどうかを確認し、自分でチェック済みとしてマークしました。これはRazorビューで行いました。できます。ただし、それが悪い習慣かどうかはわかりません。

       foreach(var c in Model.Chars) {
            string checkedStatus = "";
            if (Model.Project.ProjectCharacteristic.Any(x => x.CharacteristicID == c.CharacteristicID))
            {
                checkedStatus = "checked";
            }
            <label class="label_check">
                <input type="checkbox" name="Characteristic" value="@c.CharacteristicID" @checkedStatus> @c.CharacteristicName
            </label>
        }
于 2013-01-04T04:46:26.110 に答える