在DropDown中仅显示一个特定值

时间:2017-03-01 17:33:49

标签: c# entity-framework asp.net-core-mvc

我试图仅在此特定视图的下拉列表中显示其中一种状态。在get create方法的控制器中,我有:

ViewBag.StatusId = new SelectList(db.statuses, "StatusId", "StatusName");

我知道选择列表的第四个选项可以指定一个特定的选定项目但是如果我这次只想显示其中一个项目会怎么样?

以下是模型:

public class Status
{
    [Key]
    public int StatusId { get; set; }

    [Required(ErrorMessage = "Status is required.")]
    [MaxLength(50)]
    [Display(Name = "Status")]
    public string StatusName { get; set; }
}

3 个答案:

答案 0 :(得分:1)

请尝试这个我只是硬编码数据,你将来自数据库。您可以添加您认为在您的案例中需要的条件。

curl http://127.0.0.1/

答案 1 :(得分:1)

您可以使用linq使用where

来过滤该特定值
ViewBag.StatusId = new SelectList(db.statuses.Where(x=>x.StatusName == "Pending Approval"), "StatusId", "StatusName");

这将仅显示与条件匹配的值。在这种情况下,您无法使用.Single,因为new select期望list

答案 2 :(得分:1)

我假设您只想在存在特定条件的情况下选择"Pending Approval"名称。

if (yourCondition) 
{ 
    db.statuses = ((from ss in db.statuses 
                    where ss.StatusName == "Pending Approval" 
                    select ss).ToList()); 
}

这会选择StatusName "Pending Approval"的所有状态。

然后你跟着你的行:

ViewBag.StatusId = new SelectList(db.statuses, "StatusId", "StatusName");