IEnumerable <selectlistitem> - IEnumerable中每个项目的条件

时间:2016-03-10 20:23:33

标签: asp.net-mvc razor ienumerable selectlistitem

我正在使用MVC Razor的@ Html.DropDownList来生成下拉列表。

        IEnumerable<SelectListItem> cSfRR = db.TABLE.Where(m => m.cRoleName == dbrole)
        .Select(c => new SelectListItem
         {
             Value = c.ID,
             Text = c.Name 
         });
        ViewBag.cSfRR = cSfRR;

此TABLE还有一个字段,用于确定表中每个项目的活动。

如果我使用以下代码,我会在c.Name

之后包含该活动字段
        IEnumerable<SelectListItem> cSfRR = db.TABLE.Where(m => m.cRoleName == dbrole)
        .Select(c => new SelectListItem
         {
             Value = c.ID,
             Text = c.Name + " - " + c.Activity 
         });
        ViewBag.cSfRR = cSfRR;

我的问题是该字段只有一个字符决定了它的活动。 A - 活动,N - 不活动。 我想为SelectListItem中具有值“N”的项显示自定义文本“Not Active”。有点像...

        IEnumerable<SelectListItem> cSfRR = db.TABLE.Where(m => m.cRoleName == dbrole)
        .Select(c => new SelectListItem
         {
             Value = c.ID,
             Text = c.Name + " - " + IF C.ACTIVITY IS "N", THEN PRINT "NOT ACTIVE" 
         });
        ViewBag.cSfRR = cSfRR;

我希望有人可以帮我实现这样的目标

DROPDOWN LIST ITEM 1

DROPDOWN LIST ITEM 2

DROPDOWN LIST ITEM 3

DROPDOWN LIST ITEM 4

DROPDOWN LIST第5项 - 非活动

DROPDOWN LIST ITEM 6 - 非活动

DROPDOWN LIST ITEM 7 - 非活动

3 个答案:

答案 0 :(得分:2)

我不推广使用ViewBag,但这应该有效:

IEnumerable<SelectListItem> cSfRR = db.TABLE.Where(m => m.cRoleName == dbrole)
    .Select(c => new SelectListItem
     {
         Value = c.ID,
         Text = c.Name + (c.ACTIVITY == "N" ? " - NOT ACTIVE" : string.empty)
     });
    ViewBag.cSfRR = cSfRR;

答案 1 :(得分:2)

答案 2 :(得分:0)

您可以尝试这样的事情:

section = this.document.AddSection();
section.PageSetup.StartingNumber = 1;