web-dev-qa-db-ja.com

MVC 4で複数選択を使用する方法

選択済み で複数選択を使用したい。私はスキルモデルを持っています、

public class Skill 
    {
        public int Id { get; set; }
        public string Name { get; set; }        
    }

これは私のアプリケーションで機能します:

    <select data-placeholder="Choose a Country..." class="chzn-select" multiple >
           <option value=""></option>
           <option value="United States">United States</option>
           <option value="Albania">Albania</option>
           <option value="Algeria">Algeria</option>
   </select>

国のデータを自分のデータに置き換えたいのですが。コントローラで私は書きます:

        var list = MyService.LoadAllSkills();
        ViewBag.Skills = new MultiSelectList(list, "Id", "Name");

ビューで:

@Html.ListBox("Name", ViewBag.Skills as MultiSelectList,
              new { @class = "chzn-select" } )

@ Html.ListBox()および@ Html.DropDownList()の結果の表示は<select>とは異なります

私はその結果を得ます:

enter image description here

しかし、私は結果を得たいです

enter image description here

選択したサンプルを変更するにはどうすればよいですか?

18
Jeyhun Rahimov

ハードコーディングされた例(動作していると述べた)とListBoxヘルパーで生成した例の違いは、data-placeholder属性がないことだけです。そう:

@Html.ListBox(
    "Countries", 
    ViewBag.Skills as MultiSelectList,
    new { @class = "chzn-select", data_placeholder = "Choose a Country..." } 
)

これは少なくとも、あなたが言っていることが機能しているのと同じマークアップを生成するはずです。それが機能しない場合は、おそらくプラグインを正しく設定していないか、他のJavaScriptエラーがあります。プラグインのセットアップ方法について、プラグインのドキュメントをお読みください。

14
Darin Dimitrov

他の人物が述べたように、問題の原因はサーバー側(かみそり)ではなく、実際にはクライアント側(おそらくJqueryプラグインの初期化)にあるようです。

おそらくhtml DOMと呼ばれるプラグインの初期化がまだ生成されていない場合は、プラグインの初期化スクリプトを本文の最後または$(document).ready()の中に置き、コンソールを確認してそこにあるかどうかを確認してくださいエラーがあります

幸せなコーディング

0
Code_Worm