我一直在Google和Stackoverflow上搜索有关如何使用可以选择的值填充多选框的解决方案。但没有运气。
public class PriceObj
{
public int ID { get; set; }
public decimal Price { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public virtual ICollection<PriceGroupObj> PriceGroup {get; set;}
}
public class PriceGroupObj
{
public int ID { get; set; }
public string Name { get; set; }
}
public class PriceDatabaseContext : DbContext
{
public DbSet<PriceObj> PriceObjs { get; set; }
public DbSet<PriceGroupObj> PriceGroupObjs { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Conventions.Remove<System.Data.Entity.ModelConfiguration.Conventions.PluralizingTableNameConvention>();
modelBuilder.Entity<PriceObj>()
.HasMany(g => g.PriceGroup)
.WithMany()
.Map(t => t.MapLeftKey("GroupID").MapRightKey("PriceID").ToTable("PriceGroup"));
}
}
然后我希望能够在价格对象的编辑视图中选择所有适当的价格组。但是我没有让它工作,它没有在MultiSelect框中填充所有已经创建的组。
这是我在Razor veiw中使用的代码:
@Html.ListBoxFor(model => model.PriceGroup, Model.PriceGroup.Select(pg => new SelectListItem { Text = pg.Name, Value = pg.ID.ToString() }), new { Multiple = "multiple" })
选择元素显示在网站上,但没有值可供选择。
请帮我解决一下,我的链条坠落的地方。
答案 0 :(得分:11)
使用适合您视图要求的视图模型:
public class PriceViewModel
{
public int[] SelectedPriceIds { get; set; }
public IEnumerable<SelectListItem> Prices { get; set; }
}
ListBoxFor在视图模型上需要2个属性:
string[]
,id[]
,Guid[]
,...)的集合属性IEnumerable<SelectListItem>
属性然后在视图中:
@Html.ListBoxFor(x => x.SelectedPriceIds, Model.Prices)
现在,您的控制器操作会将此视图模型传递给视图,而不是您的域对象,而这些对象根本不适合您要实现的目标。在控制器操作中,您将从域模型中填充此视图模型。
答案 1 :(得分:0)
我可以在列表框中选择多个值,因此我建议在其他类型中执行此操作
你可以像下面这样使用....
你使用这个js文件..
<script type="text/javascript" src="@Url.Content("~/jquery-1.6.4.min.js")"></script>
<script type="text/javascript" src="@Url.Content("~/chosen.jquery.js")"></script>
<link href="@Url.Content("~/CSS/chosen.css")" rel="stylesheet" type="text/css" />
并在您的视图中使用
<script type="text/javascript">
$(document).ready(function() {
$('.chzn-select').chosen();
});
</script>
@Html.ListBoxFor(model => model.CountryId,Model.Countries, new { @class = "chzn-select",data-placeholder="Choose a Country...", Style = "width: 150px;" })
您只需绑定列表框并选择这样的多个值。 查看更多关于jquery选择... http://davidwalsh.name/jquery-chosen
我认为这会对你有帮助..