c# - エンティティフレームワークで作成されたデータベースからヘルパーのドロップダウンリストにアイテムをロードする

原文 c# asp.net asp.net-mvc entity-framework html.dropdownlistfor

エンティティフレームワークを通じて作成されたデータベーステーブルからアイテムの表示リストを読み込むのに苦労しています。

オンラインでコード例を見つけましたが、多くの場合、作成されたアイテムの静的リストがあり、ドロップダウンリストリストに追加されています。
http://www.aspnetmvcninja.com/general/asp-net-mvc-dropdown-list-example。私が持っているもの(http://odetocode.com/Blogs/scott/archive/2010/01/18/drop-down-lists-and-asp-net-mvc.aspx)の基礎となっているScott Allenの記事を見つけましたが、問題はデータを_jobsに正しくロードしていないことだと思いますか?

ここに私が私のコントローラーと他のクラスで持っているコードがあります、私はImが非常に近くてもまだそうではないと感じるので、どんな助けやガイダンスも大いに感謝されます。

public class JobsController : Controller
{
  var tasks = db.JobTypes.Select(c => new SelectListItem {Value = c.JobTypeID.ToString(), Text = c.JobDescription});
  ViewBag.JobTypeAllNames = tasks;
  return View();
}


最初にエンティティフレームワークコードに使用されている2つのクラスがあります。 JobクラスはJobTypesクラスを参照します。

public class Job
{
    [Key]
    [Display(Name="Job ID")]
    public int JobID { get; set; }
    [Display(Name = "Job Type")]
    public int JobTypesID
    {
        get;
        set;
    }

    private readonly List<JobType> _jobs;

    public IEnumerable<SelectListItem> JobTypeItems
    {
        get
        {
            return new SelectList(_jobs, "JobTypesID", "JobDescription",1);
        }
    }
}

public class JobType
{
    public int JobTypeID { get; set; }
    [Display(Name = "Task")]
    public string JobDescription { get; set; }
}


私の見解では

@Html.DropDownListFor(model => model.JobTypesID, Model.JobTypeItems);
答え
これはコンパイルされません:

public class JobsController : Controller
{
  var tasks = db.JobTypes.Select(c => new SelectListItem {Value = c.JobTypeID.ToString(), Text = c.JobDescription});
  ViewBag.JobTypeAllNames = tasks;
  return View();
}


ActionResultを返すアクションが必要です。ViewBagではなく、ビュー内にあるようなモデルを使用します。

public class JobsController : Controller
{

  public ActionResult Index()
  {
    var model = new Job();
    var tasks = db.JobTypes.Select(c => new SelectListItem {Value =   c.JobTypeID.ToString(), Text = c.JobDescription});
    model.JobTypeItems = tasks;
    return View(model);
  }
}


ps Jobモデルを調整して、セッターを含め、未使用の_jobsを削除する必要があります。

public class Job
{
    [Key]
    [Display(Name="Job ID")]
    public int JobID { get; set; }
    [Display(Name = "Job Type")]
    public int JobTypesID
    {
        get;
        set;
    }

    public IEnumerable<SelectListItem> JobTypeItems
    {
        get; set;
    }
}
関連記事

c# - Web APIのリクエストに一致する複数のアクションが見つかりました

c# - 日付ピッカーのドロップダウンリストから日付を無効にする

c# - TFSがビルドのgit reposを複製しているときのAppDomainUnloadedException

c# - SQL例外をスローするASP.Netフォーム

c# - 負の角度でも正の値を返すPIDコントローラー

c# - ルールアセンブリを読み込めません

c# - 画像ボタンに画像を読み込む

c# - LINQ-インクルード、カスタム関数を使用してカスタムタイプを返そうとしています。インクルードが機能しない

c# - aspxページの抽象クラスを継承します

javascript - javascript変数をサーバー側のasp.netに渡す方法