0

私はこれを行う方法を理解するのに苦労しています。そこにある例は、私が必要なものを理解するのに役立っていません。

モデルを表示

public class ViewModelAddUser 
{
    StudentSchedulingDBContext ssDB = new StudentSchedulingDBContext();

    public User User { get; private set; }
    public SelectList Departments { get; private set; }

    public ViewModelAddUser()
    {
        // Not Sure what to put here
    }


}

テーブルのDBContext(コードでテーブル構造を表示するためだけに)

public class Department
{
    public int DepartmentID { get; set; }
    public string DepartmentName { get; set; }
}

コントローラ

public ActionResult AddUser()
    {

        return View(new ViewModelAddUser());


    }

残りの部分をどのように形成するかはよくわかりません。nerddinnerやその他の質問を試してきましたが、うまくいきません。

アップデート

**View Model:**


public class ViewModelAddUser 
{
    public IEnumerable<SelectListItem> Departments { get; set; }
}

コントローラ:

public ActionResult AddUser()
    {
        ViewModelAddUser model = new ViewModelAddUser()
        {
            Departments = db.Departments.Select(department => new SelectListItem {
                Value = department.DepartmentID.ToString(),
                Text = department.DepartmentName
            })
        };
        return View(model);  
    }
4

1 に答える 1

3

ビューモデルには、ビュー内で使用される要素のみが含まれている必要があります。それはあなたのdbコンテキストを含むべきではありません。同様に、ビューモデルで言及するユーザークラスが、ユーザードメインモデルではなく、ユーザーを作成するためのビューモデルであることを確認してください。

ビューモデルはおそらく次のようになるはずです:

public class ViewModelAddUser 
{
    public UserViewModel User { get; set; } //depending on what your doing a string containing UserId might suffice here
    public IEnumerable<SelectListItem> Departments { get; set; }
    public string DepartmentId { get; set; } // this will be the department set by drop down list
}

ドロップダウンリストを作成するには:

StudentSchedulingDBContext ssDB = new StudentSchedulingDBContext(); //I'm assuming this can be queried to get your departments.
ViewModelAddUser model = new ViewModelAddUser()
{
    Departments = ssDB.Departments.Select(department => new SelectListItem {
         Value = department.departmentID,
         Text = department.departmentName
    }),
    User = //set user here if necessary
}

return View(model);

ドロップダウンリストを呼び出すには:

@Html.DropDownListFor(m => m.DepartmentId, Model.Departments);

また、オースティンが提供したリンクもチェックしてください。その質問に対するダリンの回答が役立つかもしれません。

于 2012-04-27T21:26:44.537 に答える