0

検索結果にフィルターを実装しようとしています。

これは、ユーザーが複数のオプションから 1 つを選択できるようにするチェックボックスです。私が抱えている問題は、複数のオプションを選択するとモデルが正しく機能しないことです。

私の推測では、問題はviewModelを介して渡されるものであるということbeds=1ですbeds[]=1&beds[]=2。コントローラーがバインドできないのは、ブラケット [] のためですか。

詳細は以下

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

   <div>
    <input type="checkbox" name="beds" id="beds_1" value="1"  /><label for="beds_1">1</label>
    <input type="checkbox" name="beds" id="beds_2" value="2"  /><label for="beds_2">2</label>
    <input type="checkbox" name="beds" id="beds_3" value="3"  /><label for="beds_3">3</label>
    <input type="checkbox" name="beds" id="beds_4" value="4"  /><label for="beds_4">4</label>
    <input type="checkbox" name="beds" id="beds_5" value="5"  /><label for="beds_5">5+</label>
    </div>

これは、次のような viewModel の一部です。

public class SearchFormViewModel 
{
   ...
   public int[] beds { get; set; }
}

ユーザーが送信を押すと、ajax 経由で検索コントローラーに送信されます

  private IEnumerable<Property> ProcessPropertySearch(SearchFormViewModel viewModelInp, int? page = null, int? ps = null) 
{
    var searchQuery = new SearchParameters {
        ...
        BedroomsCounts = viewModelInp.beds ?? new int[0],
        ...             
};

今、私はこれをデバッグしようとしました。

ベッドのフィルターを選択しない場合、viewModelInp.beds = null & BedroomCounts は int[0] に設定されます。1 つの値を選択すると、viewModelInp.beds = choosen-value & BedroomCounts が int[choosen-value] に設定されます。複数の値を選択すると、何らかの理由で viewModelInp.beds がコントローラに null として流れます。

私もフィドラーを使ってチェックしました。この場合、複数の値を選択すると、フィドラーの Web フォーム ビューに次のように表示されます。

...
beds[]=1
beds[]=2
...

複数の値が選択されているときに viewModelInp.beds = null になる理由がわかりません。

URLをブックマークするためにjquery bbqを使用しました。

複数選択の場合のURLを直接書くと、つまり www.domain.com/search#beds[]=1&beds[]=2 (or,www.domain.com/search#beds=1&beds=2) 、右側のチェックボックスが「チェック済み」として表示されます。ただし、検索ではまだ無視されます。

どんな助けでも感謝します!ありがとう

--- 要求に応じて更新

私はJquery BBQを使用しています。そして、アヤックスは

$.post('/search/getproperties', $.param(model), function (response) {
 // show properties returned
}

上記の場合の $.param(model) は次のようになりますbeds[]=1&beds[]=2

4

2 に答える 2

1

モデル バインダーは、データを受信する形式が気に入らないと思います。

あなたは言った:上記の場合の $.param(model) はbeds[]=1&beds[]=2に等しい

リクエストの本文は実際には次のようにする必要がありますbeds=1&beds=2[]

于 2014-02-20T20:50:20.857 に答える