1

選択可能な値を複数選択ボックスに入力する方法について、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" })

select 要素は Web サイトに表示されますが、選択する値はありません。

私のチェーンが落ちているところを整理するのを手伝ってください。

4

2 に答える 2

11

ビューの要件に適合するビュー モデルを使用します。

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

ListBoxFor には、ビュー モデルに 2 つのプロパティが必要です。

  1. string[]選択した要素の ID を保持するプリミティブ型 ( 、id[]Guid[]、...)のコレクション プロパティ
  2. IEnumerable<SelectListItem>すべてのアイテムのリストを保持するプロパティ

そしてビューで:

@Html.ListBoxFor(x => x.SelectedPriceIds, Model.Prices)

これで、コントローラーのアクションは、達成しようとしていることに適応していないドメイン オブジェクトの代わりに、このビュー モデルをビューに渡します。ドメイン モデルからこのビュー モデルを設定するのは、コントローラー アクションの内部です。

于 2012-09-26T10:41:08.580 に答える
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 choosen の詳細を参照してください ... http://davidwalsh.name/jquery-chosen

ここに画像の説明を入力

私はこれがあなたを助けると思う..

于 2012-09-26T11:08:16.437 に答える