検索結果にフィルターを実装しようとしています。
これは、ユーザーが複数のオプションから 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