我的模型是在MVC3
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記錄可以包含一個或多個品牌。所以品牌保存到另一個名爲SiteBrand的表。
SiteBrand包含對SiteConfig(IdSiteConfig)和品牌(BrandId)的外鍵引用。
當我創建一個SiteConfig時,我想顯示所有可用品牌作爲列表框,用戶可以選擇一個或多個記錄(可能不選擇任何品牌)。
但是,當我將我的視圖與模型綁定時,如何將我的列表框綁定到品牌列表,以及何時發佈視圖,如何獲取所選品牌。
我必須將SiteConfig對象保存到所選項目的數據庫中。這是我的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;
}
有人可以advide如何綁定列表框,並獲得選擇的項目。
謝謝。
感謝日回覆。當我在模型中提交表單時,我得到選定的ID。但是我將SiteBrands設置爲null。如果我必須保存模型,這裏是否需要使用選定的項目創建SiteBrands集合並提交?或者還有其他更好的方法嗎? – Naresh 2012-08-13 15:08:36
爲什麼在創建Siteconfig時需要SiteBrands集合?我想你需要從列表框中選擇的項目(這是你在最初的問題中提出的)。但是如果你再次渲染相同的視圖,那麼在將視圖模型返回到視圖之前,需要重新分配SiteBrands,因爲HTTP是無狀態的 – Shyju 2012-08-13 15:12:59
因爲我的Create方法需要一個SiteConfig類型的對象。我的db只知道SiteBrands。 Id不知道有關選定ID的任何信息。正如我在我的問題中解釋的,SiteBrand包含對網站ID以及品牌ID的外鍵引用。 – Naresh 2012-08-13 15:20:33