0

複数選択のjquery plagin(Choosen)があり、「複数選択」モードで使用すると、コントローラーの次の値が期待されます:

    posted string = 'value1,value2...'

本当に持っている

    posted string = 'value2'

FormCollection を直接参照する場合にのみ、次のような期待値が得られます。

    [HttpPost]
    public ActionResult TagSearech(/*string tagSelect*/FormCollection c)
    {
      // only one value here
      // string[] names = tagSelect.Split(',');

      // as expected: value1,....
       string expectedValue = c['tagSelect'];

        return View();
    }

何がこの動作を引き起こすのか理解できません。

編集

ビューは次のとおりです。

    @using (Html.BeginForm("TagSearech", "Tag"))
    {
       @Html.DropDownList("tagSelect", Model, new { @class = "chzn-select",  data_placeholder = "tag names", multiple = "" })
       <input  type="submit"/>
    }
4

1 に答える 1

1

MVC は、URL の入力データをモデルにバインドしようとします。Chosen.js がどのようにデータをサーバーに送り返すかは見ていませんが、本質的に間違った形式で入ってくるため、MVC は最初に検出した要素を文字列 Model にバインドします。

FormsCollection は、URL に投稿されたすべてのデータを取得します。これが、選択したすべての値がそこに表示される理由です。

入力モデルを string から string[] に変更して、すべての項目が配列にバインドされているかどうかを確認しましたか?

于 2013-04-23T10:56:09.763 に答える