在 MVC 中使用复选框查询选定项
Query Selected Items using checkbox in MVC
我想问一下,在 MVC 中进行 linq 查询时,复选框中的 selected 项怎么可能被使用。
我有这个在我看来,我显示了所有可能的选项,用户只需 select 将用于生成报告的软件类型。
@using (Ajax.BeginForm("Create_Report", "Softwares",
new AjaxOptions
{
HttpMethod = "POST",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "target2"
}))
{
@Html.ValidationSummary(true)
<p>For A Reports: Kindly check softwares to create reports.</p><br />
foreach (var item in Model) {
<input type="checkbox" value="@item.software_name" name="software_type"/>@item.software_name
<br />
}
<input type="submit" value="Create Report"/>
}
之后,我希望在查询中使用 selected 软件类型,例如,如果用户 selects Adobe Pro、Adobe Illustrator、MS Visio 和 Acrobat,查询应该像 "Select from Software _table where software__type = "Adobe Pro" && software_type ="Adobe Illustrator && "so fort.
是否有任何方法可以使用复选框中的 selected 项来缩短查询?非常感谢任何帮助。
您需要定义一个集合来存储您选择的项目,并使用模型绑定将选择的项目映射到此 属性。
//store checked Items
public IEnumerable<string> SelectedSoftware { get; set; }
//check box list items
public List<string> SoftwareList = new List<string>();
foreach (var item in Model.SoftwareList )
{
<input type="checkbox" name="SelectedSoftware" value="@item">@item
}
在你的控制器中:
public ActionResult Create_Report(string[] SelectedSoftware)
{
//do action
}
假设您的POST方法是
[HttpPost]
public ActionResult Create_Report(string[] software_type)
然后 software_type
将包含所选值的数组,因此您可以使用 .Contains()
来过滤查询
var items = db.Software.Where(s => software_type.Contains(s.software_type))
旁注:从您的属性中删除那些糟糕的下划线并遵循正常的命名约定(SoftwareType、SoftwareName 等或简单的 Type、Name 等,因为它们已经在 class 命名的软件中)
我想问一下,在 MVC 中进行 linq 查询时,复选框中的 selected 项怎么可能被使用。 我有这个在我看来,我显示了所有可能的选项,用户只需 select 将用于生成报告的软件类型。
@using (Ajax.BeginForm("Create_Report", "Softwares",
new AjaxOptions
{
HttpMethod = "POST",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "target2"
}))
{
@Html.ValidationSummary(true)
<p>For A Reports: Kindly check softwares to create reports.</p><br />
foreach (var item in Model) {
<input type="checkbox" value="@item.software_name" name="software_type"/>@item.software_name
<br />
}
<input type="submit" value="Create Report"/>
}
之后,我希望在查询中使用 selected 软件类型,例如,如果用户 selects Adobe Pro、Adobe Illustrator、MS Visio 和 Acrobat,查询应该像 "Select from Software _table where software__type = "Adobe Pro" && software_type ="Adobe Illustrator && "so fort.
是否有任何方法可以使用复选框中的 selected 项来缩短查询?非常感谢任何帮助。
您需要定义一个集合来存储您选择的项目,并使用模型绑定将选择的项目映射到此 属性。
//store checked Items
public IEnumerable<string> SelectedSoftware { get; set; }
//check box list items
public List<string> SoftwareList = new List<string>();
foreach (var item in Model.SoftwareList )
{
<input type="checkbox" name="SelectedSoftware" value="@item">@item
}
在你的控制器中:
public ActionResult Create_Report(string[] SelectedSoftware)
{
//do action
}
假设您的POST方法是
[HttpPost]
public ActionResult Create_Report(string[] software_type)
然后 software_type
将包含所选值的数组,因此您可以使用 .Contains()
来过滤查询
var items = db.Software.Where(s => software_type.Contains(s.software_type))
旁注:从您的属性中删除那些糟糕的下划线并遵循正常的命名约定(SoftwareType、SoftwareName 等或简单的 Type、Name 等,因为它们已经在 class 命名的软件中)