Razor を使用した ASP.NET MVC3 プロジェクトがあります。次のエンティティがあります:
オファー:
public class Offer
{
public Int32 Id { get; set; }
public String Name { get; set; }
public DateTime Added { get; set; }
public String Description { get; set; }
public Decimal Price { get; set; }
public String Address { get; set; }
public virtual OfferCategory OfferCategory { get; set; }
...
}
オファーカテゴリ:
public class OfferCategory
{
public Int32 Id { get; set; }
public String Name { get; set; }
public String Description { get; set; }
public virtual List<Offer> Offers { get; set; }
...
}
DropDownListFor(OfferCategory) を使用して新しいオファーを追加するためのフォームを作成しようとしています。この dropDownList には、db 内のすべての既存の offerCategories が表示されます。ここで私はどこまで行きますか:
コントローラーの AddOffer アクション:
var categories = _context.OfferCategory.ToList();
List<SelectListItem> OfferCategories = new List<SelectListItem>();
foreach (var offerCategory in categories)
{
OfferCategories.Add(new SelectListItem() { Selected = false, Text = offerCategory.Name, Value = offerCategory.Id.ToString()});
}
ViewBag.OfferCategories = OfferCategories;
そして、ここにビューがあります:
//... A lot of things
<div class="editor-label">
@Html.LabelFor(model => model.OfferCategory)
</div>
<div class="editor-field">
@Html.DropDownListFor(model=>model.OfferCategory, (IEnumerable<SelectListItem>)ViewBag.OfferCategories)
</div>
//... A lot of things
フォームにすべての OfferCategories も表示されますが、送信ボタンをクリックすると、POST AddOffer(Offer offer) ハンドラーがフォームで選択された OfferCategory を取得しませんでした。どうすればそれを機能させることができますか?