我有一个控制器,在我的索引视图中提交一个搜索字段。
[System.Web.Mvc.HttpGet]
public ActionResult ShowResultsWithFilter(SearchModelWithFilters searchModel)
{
//Logic and setting viewbag values
return View(searchModel);
}
网址会返回我的结果。 如
“URL /结果/ ShowResultsWithFilter?searchString的= ASTRINGTOSEARCH”
我的提交模式
public class SearchModelWithFilters
public string searchString { get; set; }
public bool filterA { get; set; }
public bool filterB { get; set; }
public bool filterC {get; set;}
public SearchModelWithFilters()
{
//My initial values which should be defaut when first loading the results page
filterA = true;
filterB = true;
filterC = true;
}
}
搜索和过滤器也在结果页面上,因此我使用相同的控制器重新提交新的或相同的详细信息,并且网址返回为
“URL /结果/ ShowResultsWithFilter searchString的= ASTRINGTOSEARCH&安培; filterA =假安培; filterA =真安培; filterB =假安培; filterB =真安培; filterC =假安培; filterC =真”
每个过滤器的第一个实例始终为false,第二个实例基于提交的值进行更新。
我希望它只显示正确更新的参数(我的过滤器),而不是双倍。
我的搜索字段视图(SearchField)
@model CodeCompareUk.Models.SearchModelWithFilters
<div class="row">
<div class="col-md-12">
<div class="input-group input-group-lg">
@Html.TextBoxFor(m => m.searchString, new { @class = "form-control", @placeholder = "Enter Search..." })
<a href="javascript:$('form').submit();" class="input-group-addon">
<i class="fa fa-search"></i>
</a>
</div>
</div>
</div>
我把它放在这个表单助手中,在结果页面中还包括部分“精炼搜索”
@using (Html.BeginForm("ShowResultsWithFilter", "Result", method: FormMethod.Get))
{
@Html.Partial("SearchField")
//also this is only added in results page
@Html.Partial("RefineSearch")
}
我的精炼搜索(RefineSearch)
@model CodeCompareUk.Models.SearchSubmitModelWithFilters
@Html.CheckBoxFor(me => me.FilterA, new { @class = "custom-checkbox" })
@Html.CheckBoxFor(me => me.FilterB, new { @class = "custom-checkbox" })
@Html.CheckBoxFor(me => me.FilterC, new { @class = "custom-checkbox" })
由于
答案 0 :(得分:2)
这就是CheckBoxFor的工作原理。它会创建2个<inputs>
- 一个&#34;隐藏&#34;和第二个&#34;复选框&#34;。请注意,通常使用&#34; POST&#34;提交表单。不是&#34; GET&#34;。无论如何,请在此处查看有关CheckBoxFor的更多信息: