2017-03-01 5 views
1

この特定のビューのドロップダウンにステータスのいずれかを表示しようとしています。 DropDownで特定の値のみを表示する

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

は、私は、特定の選択した項目が、私はこれだけの時間のいずれかの項目を表示する場合に指定することができ、選択リストのための4つ目のオプションを知っている:作成取得方法のためのコントローラでは、私は、この持っていますか?

は、こちらのモデルです:

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

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

これはあなたの条件に基づいてdb.statusesをフィルタリングする必要があることを意味しますか? –

+0

ええ、それを行うための最善の方法は何ですか? –

+0

あなたの状態はどうですか? –

答えて

1

あなたは、この条件に一致する値のみを表示しますwhere

ViewBag.StatusId = new SelectList(db.statuses.Where(x=>x.StatusName == "Pending Approval"), "StatusId", "StatusName"); 

を使用して、その特定の値をフィルタリングするためにlinqを使用することができます。この場合、あなたは.Singleを使用することはできませんnew selectlist

1

すると、あなたは、DBから来るということだ。この私だけのハードコーディングされたデータを試してみてください。あなたの場合に必要となる条件を追加することができます。

var status = new List<Status> { 
       new Status { StatusId=1, StatusName="A" }, 
       new Status { StatusId=2, StatusName="B" }, 
       new Status { StatusId=3, StatusName="C" }, 
       new Status { StatusId=4, StatusName="D" }, 
}; 

var result = status.FirstOrDefault(x => x.StatusName.Equals("A", StringComparison.InvariantCulture)); 

if(result!=null) 
{ 
    ViewBag.StatusId = new SelectList(result, "StatusId", "StatusName"); 
} 
1

を期待していたので、私はあなたが特定の条件が存在する場合にのみ、"Pending Approval"名を選択したいと仮定しています。

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

これは"Pending Approval"StatusNameを持つ任意の状態を選択します。

次に、あなたの行では、次のとおりです。

ViewBag.StatusId = new SelectList(db.statuses, "StatusId", "StatusName"); 
関連する問題