如何使DropDownListFor不要使用静态列表重复数据库数据?

时间:2016-11-14 09:23:54

标签: c# asp.net-mvc razor asp.net-mvc-5

我有一个DropDownListFor静态列表的月份数,如果我选择第一个月1和make编辑将找到DropDownListFor重复第一个月像这样 enter image description here

DropDownListFor代码:

                    @Html.DropDownListFor(model=>model.FinancialInfo.FinancialExpiryMonth, (IEnumerable<SelectListItem>)ViewBag.FinancialMonths, (Model.FinancialInfo == null || Model.FinancialInfo.ExpiryDate == null) ? String.Empty : Model.FinancialInfo.ExpiryDate.Value.Month.ToString(), new { @class = "description-text" })

注意:FinancialInfo.FinancialExpiryMonth是元数据元素,使其成为View模型。

ViewBag.FinancialMonths的代码:

        ViewBag.FinancialMonths = ListOfNumbers(1, 12).Select(m => new SelectListItem { Text = m.ToString(), Value = m.ToString() });`

ListOfNumbers的代码:

    public List<int> ListOfNumbers(int startNum, int endNum)
    {
        List<int> listOfNumbers = new List<int>();
        for (int i = startNum; i <= endNum; i++)
        {
            listOfNumbers.Add(i);
        }
        return listOfNumbers;
    }

2 个答案:

答案 0 :(得分:1)

您看到的第一个“1”是占位符,它由

生成
(Model.FinancialInfo == null || Model.FinancialInfo.ExpiryDate == null) ? String.Empty : Model.FinancialInfo.ExpiryDate.Value.Month.ToString()

将下拉列表定义替换为:

@Html.DropDownListFor(model=>model.FinancialInfo.FinancialExpiryMonth, (IEnumerable<SelectListItem>)ViewBag.FinancialMonths, "Please select...", new { @class = "description-text" }) 

您会看到'请选择...'作为占位符

为了预先选择一个月,只需为model.FinancialInfo.FinancialExpiryMonth

指定一个值即可

答案 1 :(得分:0)

只需使用public function category() { $category=DB::select('select category_name,category_id from categories'); return view('admin.category_table')->with(['category' => $category]); } 中的Lambda表达式,并在模型具有值时选择所选条件为真

Enumerable.Range