gpt4 book ai didi

c# - 使用数据 MVC 3 .NET 填充多选列表

转载 作者:太空宇宙 更新时间:2023-11-03 17:33:06 24 4
gpt4 key购买 nike

我一直在 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"));
}


}

然后我希望能够在价格对象的编辑 View 中为价格选择所有适当的价格组。但我没有让它工作,它没有填充多选框中所有已经创建的组。

这是我在 Razor View 中使用的代码:
@Html.ListBoxFor(model => model.PriceGroup, Model.PriceGroup.Select(pg => new SelectListItem { Text = pg.Name, Value = pg.ID.ToString() }), new { Multiple = "multiple" })

选择元素显示在网站上,但没有可供选择的值。

请帮我整理一下,我的链条掉在哪里了。

最佳答案

使用适合您的 View 要求的 View 模型:

public class PriceViewModel
{
public int[] SelectedPriceIds { get; set; }
public IEnumerable<SelectListItem> Prices { get; set; }
}

ListBoxFor 在您的 View 模型上需要 2 个属性:
  • 原始类型的集合属性(string[]id[]Guid[]、...),它将保存所选元素的 ID
  • 一个 IEnumerable<SelectListItem>将保存所有项目列表的属性

  • 然后在 View 中:
    @Html.ListBoxFor(x => x.SelectedPriceIds, Model.Prices)

    现在,您的 Controller 操作将将此 View 模型传递给 View ,而不是您的域对象,这些对象根本不适合您要实现的目标。在 Controller 操作中,您将从域模型中填充此 View 模型。

    关于c# - 使用数据 MVC 3 .NET 填充多选列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12599470/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com