私はMVCを使い慣れていないので、これは愚かな疑問です - 私は強く型付けされたビューをASPで扱おうとしています。 net mvc。私はバージョン3で作業しています。 私は2つのモデルを持つプロジェクトを持っています - 人と部署。人は部署に所属しなければなりません。その後、私は部門を参照する人のモデルを持っているASP.NET MVC3、強く型付けされたビューでもドロップダウンリストがビューバックに頼っています
public class Department
{
public int Id { get; set;}
public string DeparmentName { get; set;}
}
:だから私は、私の部署のモデルを(と私は私のコントローラとCRUDインターフェイスを生成した)持っ
public class Person
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public int Department_Id { get; set; }
[ForeignKey("Department_Id")
public virtual Department Department { get; set;}
}
今、私は私のコントローラとビューを生成します。私はPersonControllerに見たときに今、私は作成のために、次のいる:
public ActionResult Create()
{
ViewBag.Department_Id = new SelectList(db.Deparments, "Id", "DepartmentName");
return View();
}
と人\ Create.cshtmlで、ドロップダウン部門を作成するためのコードは、私のよう
@Html.DropDownList("Department_Id", String.Empty)
ですDropDownList HtmlヘルパーがViewBagを使用してドロップダウンリストを作成しています。しかし、FirstNameとLastNameは、ViewBagに依存せずに入力フィールドを作成しているようです - 私のビューは強く型付けされていてDropDownListではないので、私のViewではFirstNameとLastNameフィールドでコンパイル時間をチェックできます。
強く型付けされていない部門のDropDownListがあるか、間違ったことをしていて強く型付けする方法がありますか?
感謝:)
こんにちはエドウィン - ありがとう - 一種のPersonが一つのDepartment_IDを持っていますが、ビューは私のPerson Modelにバインディングされていると思っていました。 "仮想"プロパティ?たぶんMVCフレームワークであまりにも多くの "魔法"を探しているだけかもしれません。 – Rick
@Rick:そうだと思います。ビューは、あなたのPersonによって定義された単一のDepartmentにのみバインドされます。ビューバックを使用して、部門の完全なリストを転送します。ちなみに、ViewBagは、(他の回答からの)ViewDataのラッパーであり、動的プロパティを作成することができます。 –