根据ASP.NET MVC

时间:2017-12-05 22:29:36

标签: c# asp.net-mvc

我正在尝试根据在ASP.NET MVC应用程序中硬编码的dropdownlist选项显示数据库中的项目列表。

我的Controller

 public ActionResult ListofItems()
            {
                ListofClassClassHandle listofClassClassHandle = new ListofClassClassHandle ();
                return View(listofClassClassHandle.LeadingAll());
            }

ListofClassClassHandle班级

public List<Leading> LeadingAll()
        {
            clsUtilities clsUtilities = new clsUtilities();
            DataSet ds;
            List<Leading> leading = new List<Leading>();
            string sSQL;
            sSQL = "exec GetLeading 'NZ'";
            ds = clsUtilities.GetDataSet(sSQL);
            DataTable dataTable = ds.Tables[0];
            foreach(DataRow dr in dataTable.Rows)
            {
                leading.Add(
                    new Leading
                    {
                        RankId = Convert.ToInt32(dr["RankId"]),
                        Name = Convert.ToString(dr["Name"]),

                    }               
                    ); 
            }

Leading班级

public class Leading
    {
        public int RankId { get; set; }
        public string Name{ get; set; }   
        public Countries AllCountries { get; set; }

    }
public enum Countries
    {
        New_Zealand,
        Australia      
    }

Leading查看

 @Html.DropDownList("AllCountries",
        new SelectList(Enum.GetValues(typeof(Countries))),
        "Select Country",
         new { @class = "form-control", style = "width: 150px;" })

<table class="table">
    <tr>
        <th>
            @Html.DisplayName("Rank")
        </th>
        <th>
            @Html.DisplayName("Name")
        </th>


    </tr>

    @foreach (var item in Model)
    {
        <tr>
            <td>
                @Html.DisplayFor(modelItem => item.RankId)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Name)
            </td>

        </tr>
    }

</table>

我想根据下拉列表国家/地区列表选择显示列表。下拉列表是硬编码的,其中数据列表是从数据库填充的。

请指导我。我不知道如何做到这一点?任何帮助或指导都非常感谢。

1 个答案:

答案 0 :(得分:1)

您可以将下拉选项传递给GET操作方法,然后从那里传递给您的数据访问方法,并使用它来获取已过滤的数据集。

首先,在操作方法中添加一个参数。

public ActionResult ListofItems(string AllCountries="")
{
    var h = new ListofClassClassHandle();
    return View(h.LeadingAll(AllCountries));
}

并更新LeadingAll方法以接受此参数。更新您的数据访问代码以使用country变量中的值。

public List<Leading> LeadingAll(string country)
{
    // to do : use the value of country to call the stored procedure
    // to do : return list of Leading objects
}

现在,在您的视图中,您可以将下拉列表与提交按钮一起保存在form标记内。将表单标记的操作属性值设置为ListOfItems操作方法,并将表单method属性设置为GET

@using (Html.BeginForm("ListOfItems", "Home", FormMethod.Get))
{
    @Html.DropDownList("AllCountries",
            new SelectList(Enum.GetValues(typeof(Countries))),
            "Select Country",
            new { @class = "form-control", style = "width: 150px;" })
    <input type="submit" value="Filter" />
}

当用户从SELECT元素中选择一个选项并单击“提交”按钮时,它将使用查询字符串中的选择(例如:/ListOfItems/?AllCountries=Australia)进行GET调用,并且您的操作方法代码将使用此值来获取该国家的数据通过传递给您的数据访问方法。