私はASP.NETが初めてで、次のことを達成しようとしています:
私は MVC4 と EF へのコード優先アプローチを使用して開発しています。次のモデルがあります。
public class Booking {
// Lot of standard int/string attributes
// And a navigation attribute
public virtual Teaching teaching {get;set;}
}
教えることは、かなり基本的な別のモデルです。初期化子を使用してデータベースをブートストラップしましたが、すべて問題ありません。EF によって SQL 構造が作成され、Teaching_Id が Booking テーブルに自動的に追加されました。私のモデルも正しく設定されており (遅延読み込みだと思います)、たとえば index ビューで model.Teaching.name を出力できます。
私は現在、データベースに新しい予約を追加する作成フォームを作成しようとしています。ユーザーがリストから教えを選択できるようにしたいと考えています。これまでのところこれを達成することができました。私のビューはかなり標準的です(自動生成):
<div class="editor-label">
@Html.LabelFor(model => model.BookingDate)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.BookingDate)
@Html.ValidationMessageFor(model => model.BookingDate)
</div>
これまでのところ、単純な属性についてです。セレクトリスト用に作りました
私のコントローラーで:
var id = (int)Membership.GetUser().ProviderUserKey;
ViewBag.listTeachings = db.Teachings.Where(x => x.Teacher.UserId == id).ToList();
私の見解では(フォーム内)
@Html.DropDownListFor(model => model.Teaching.Id, new SelectList(ViewBag.listTeachings, "Id", "Id"))
(テスト目的で、ドロップダウンリストにIDを登録しています)
フォームを POST すると、すべて問題ありません (モデル状態エラーはありません) が、データベースには何も追加されません。私のフォーム POST コンテンツには、Teachings.Id エントリがあります。また、model.Teaching.Id の代わりに DropDownListFor model => model.Teaching を使用しようとしましたが、Teaching エントリが PostData に渡され、純粋な int をオブジェクトに変換する方法がわからないと思います。
読んでくれてありがとう、事前に感謝します!