我想询问复选框中的所选项目是否可能用于在MVC中进行linq查询。 我在这个视图中有一个显示所有可能的选项,用户只需选择将用于生成报告的软件类型。
@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"/>
}
之后,我希望在查询中使用所选的软件类型,例如,如果用户选择Adobe Pro,Adobe Illustrator,MS Visio和Acrobat,查询应该类似于&#34;从软件中选择_table where software__type =&#34; Adobe Pro&#34; &安培;&安培; software_type =&#34; Adobe Illustrator&amp;&amp; &#34;所以堡垒。
有没有办法使用复选框中的所选项来缩短查询?非常感谢任何帮助。
答案 0 :(得分:0)
您需要定义一个集合来存储所选项目,并使用模型绑定将所选项目映射到此属性。
&#xA;&#xA; // store checked Items& #xA; public IEnumerable&lt; string&gt; SelectedSoftware {get;组; }&#xA; //复选框列表项&#xA; public List&lt; string&gt; SoftwareList = new List&lt; string&gt;();&#xA;&#xA; foreach(Model.SoftwareList中的var项目)&#xA; {&#XA; &lt; input type =“checkbox”name =“SelectedSoftware”value =“@ item”&gt; @ item&#xA;&#xA;控制器中的&#xA;
&#xA;&#xA; :
&#xA;&#xA; public ActionResult Create_Report( string [] SelectedSoftware)&#xA; {&#XA; //做行动&#xA; }&#XA; 代码>
&#XA;
答案 1 :(得分:0)
假设你的POST方法是
values-sw360dp
values-sw600dp-land
values-sw600dp-v21
values-sw720dp-land
values-sw720dp
values-v17
values-v21
values-2400dp
values-w720dp-land
values-w720dp
然后[HttpPost]
public ActionResult Create_Report(string[] software_type)
将包含所选值的数组,以便您可以使用software_type
来过滤查询
.Contains()
附注:从您的属性中删除那些可怕的下划线并遵循常规命名约定(SoftwareType,SoftwareName等,或者只是Type,Name等,因为它们已经在名为Software的类中)