我正在尝试为我的搜索结果实现过滤器。
这是一个复选框,允许用户选择多个选项之一。The issue I am having is that the model does not work properly when more than one option is selected.
My hunch is that the issue is what is being passed via the viewModel If one value is selected fiddler shows me that beds=1
is passed whereas when multiple values of checkbox are selected then beds[]=1&beds[]=2
is passed. 是不是因为括号 [] 控制器无法绑定它。
更多详情如下
观点如下:
<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]。如果我选择一个值,则 viewModelInp.beds = choosen-value & BedroomCounts 设置为 int[choosen-value] 如果我选择多个值,则出于某种原因 viewModelInp.beds 在控制器中作为空值流动。
我也使用 fiddler 进行了检查。对于这种情况,当我选择多个值时,提琴手 webform 视图显示以下内容:
...
beds[]=1
beds[]=2
...
我不确定为什么选择多个值时 viewModelInp.beds = null 。
我使用 jquery bbq 来帮助为我的网址添加书签。
如果我直接为多选情况编写 url,即
www.domain.com/search#beds[]=1&beds[]=2
(or,www.domain.com/search#beds=1&beds=2)
- 那么正确的复选框显示为“已选中”。但是,搜索仍然忽略它。
任何帮助将不胜感激!谢谢
--- 按要求更新
我正在使用 Jquery 烧烤。而ajax是
$.post('/search/getproperties', $.param(model), function (response) {
// show properties returned
}
上述情况下的 $.param(model) 等于beds[]=1&beds[]=2