使用MVC中的复选框查询所选项目

时间:2015-04-29 05:00:51

标签: c# asp.net-mvc linq checkbox

我想询问复选框中的所选项目是否可能用于在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; Adob​​e Pro&#34; &安培;&安培; software_type =&#34; Adob​​e Illustrator&amp;&amp; &#34;所以堡垒。

有没有办法使用复选框中的所选项来缩短查询?非常感谢任何帮助。

2 个答案:

答案 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的类中)