私のモデルは
public class SiteConfig
{
public SiteConfig()
{
}
public int IdSiteConfig { get; set; }
public string Name { get; set; }
public byte[] SiteLogo { get; set; }
public string Brands { get; set; }
public string LinkColour { get; set; }
public IEnumerable<SiteBrand> SiteBrands { get; set; }
}
と
public class SiteBrand
{
public int Id { get; set; }
public int SiteId { get; set; }
public int BrandId { get; set; }
public Brand Brand { get; set; }
public SiteConfig SiteConfig { get; set; }
}
public class Brand
{
public int BrandId { get; set; }
public string Name { get; set; }
public IEnumerable<SiteBrand> SiteBrands { get; set; }
}
私はデータベースの最初のアプローチに従っています。各 SiteConfig レコードには、1 つ以上のブランドを含めることができます。したがって、Brand は SiteBrand という別のテーブルに保存しています。
SiteBrand には、SiteConfig (IdSiteConfig 上) と Brand (BrandId) の両方への外部キー参照が含まれています。
SiteConfig を作成しているときに、ユーザーが 1 つまたは複数のレコードを選択できるリスト ボックスとして、利用可能なすべてのブランドを表示したいと考えています (ブランドを選択しない場合があります)。
しかし、ビューをモデルにバインドするときに、リスト ボックスをブランドのリストにバインドする方法と、ビューが投稿されたときに選択したブランドを取得する方法を教えてください。
そして、選択した項目とともに SiteConfig オブジェクトをデータベースに保存する必要があります。これが私のDB図です。
これは、db に保存する私の DAL です。
public SiteConfig Add(SiteConfig item)
{
var siteConfig = new Entities.SiteConfig
{
Name = item.Name,
LinkColour = item.LinkColour,
SiteBrands = (from config in item.SiteBrands
select new SiteBrand {BrandId = config.BrandId, SiteId = config.SiteId}).
ToList()
};
_dbContext.SiteConfigs.Add(siteConfig);
_dbContext.SaveChanges();
return item;
}
リストボックスをバインドして選択したアイテムを取得する方法を教えてください。
ありがとう。