我是MS MVC的新手,我遇到了这个问题。我尝试使用一些复选框过滤数据库中的数据。 我正在使用MS MVC。 LINQ to SQL,MS SQL Express。
<% using (Html.BeginForm())
{ %>
<fieldset>
<legend>Search filter</legend>
<fieldset style="width:130px;height:150px;float:left;margin-left:10px">
<legend></legend>
<table>
<tr><td><%= Html.CheckBox("checkbox", false)%></td><td>Solar</td></tr>
<tr><td><%= Html.CheckBox("checkbox1", false)%></td><td>Water</td></tr>
<tr><td><%= Html.CheckBox("checkbox2", false)%></td><td>Biomas</td></tr>
<tr><td><%= Html.CheckBox("checkbox3", false)%></td><td>Other....</td></tr>
</table>
</fieldset>
Controller.cs
public ActionResult Search()
{
return View();
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Search(FormCollection formValues)
{
string value = formValues["checkbox"];
string value2 = formValues["checkbox1"];
string value3 = formValues["checkbox2"];
string value4 = formValues["checkbox3"];
var dataContext = new powerPlantModelDataContext();
var solar = from q in dataContext.TypeDetails
where q.KindName.Equals(value.ToString())
select q;
if (solar != null) { ViewData["solar"] = solar.ToList(); }
return View();
}
收集并查看view.aspx中的数据
<%foreach (RenewalSourcesWeb.Models.TypeDetail solar in (List<RenewalSourcesWeb.Models.TypeDetail>) ViewData["solar"]) {%>
<table>
<tr><td>Value1</td><td><%=solar.Description %></td></tr>
<tr><td>Value2</td><td><%=solar.KindName %></td></tr>
</table>
<%} %>
我的问题是,复选框值是假设是真或假没有复选框,我不能使这工作。 如果有人有一些建议,我会感激任何帮助。如果有人建议解决多个复选框是真的。
答案 0 :(得分:1)
以下是一些建议:
1。)除非您有强制要求使用MVC版本2或1的要求,否则请从WebForms视图引擎(&lt;%语法,如此%&gt;)更改为Razor视图引擎(@Syntax.LikeThis
)。
2.。)使用强类型的ViewModel而不是ViewData
。
public class SearchViewModel
{
public bool checkbox { get; set; }
public bool checkbox1 { get; set; }
// ...etc
}
public ActionResult Search()
{
return View(new SearchViewModel());
}
<tr><td>@Html.CheckBoxFor(m => m.checkbox)</td><td>Solar</td></tr>
<tr><td>@Html.CheckBoxFor(m => m.checkbox1)</td><td>Water</td></tr>
[HttpPost]
public ActionResult Search(SearchViewModel model)
{
string value = model.checkbox;
string value2 = model.checkbox1;
// ...etc
3。)搜索时,使用GET而不是POST提交表单。 POST是在您更改数据时,GET用于查询数据(如搜索)。
@using (Html.BeginForm("Search", "Search", FormMethod.Get))
{
...