2012-06-15 73 views
1

我有一個ViewBag.People由視圖組成;有沒有辦法在ViewBag中搜索一個項目?

var query = db.Vw_INTERACTPEOPLE.Select(p => new { p.PersonID, p.Fullname }); 
ViewBag.People = new SelectList(query.AsEnumerable(), "PersonID", "FullName"); 

,所有工作正常,但在我看來,我有另一種模式填充一個表,其中一個項目是填充是哪個環節,將personId的JobcontactID(文本)(我沒有設計數據庫)。所以,我想搜索viewbag的ID而不是顯示它,我想顯示人員姓名,所以有沒有任何viewbag搜索功能?

回答

2

ViewBag只是圍繞ViewData一個dynamic包裝(它允許在運行時調用的屬性,成爲將被用於查找值在ViewData的關鍵)。您可以查詢ViewData這樣的:

SelectList peopleSelectList = (from pair in ViewData 
           where pair.Key == "People" 
           select pair.Value); 

更新所以,你想查詢的選擇列表本身?

這裏是在Razor視圖定義的函數:

@functions { 
    public string FindPersonName(string id) 
    { 
     return (from item in ViewBag.People as SelectList 
       where item.Value == id 
       select item.Value).FirstOrDefault(); 
    } 
} 

@functions.FindPersonName(jobContactId) 
+0

嗨,感謝您的快速回復, 我想在viewbag中查找一個人名,並顯示名稱而不是ID。 這可能有助於解釋我正在嘗試做什麼。 ​​ @if(item.JobcontactID.ToString()== 「」){ @ Html.DisplayFor(modelItem => item.JobcontactID) } 別的 { 獲取JobcontactID和搜索Viewbag。人(peopleID)並顯示關聯的名稱。 } – chris

+0

看看我的編輯大致是你的意思。 – HackedByChinese

+1

@HackedByChinese,這是我在過去幾天看到的最大的駭人聽聞。 –

7

我建議通過您的視圖模型的信息。它將長期保持清潔和可維護性。這裏是一個很好的帖子:Use ViewModels to manage data & organize code in ASP.NET MVC applications

+3

+1視圖模型,唯一正確的方法來做ASP.NET MVC。 –

+1

謝謝Chris和Darin! –

+1

抱歉,延遲期望鏈接有很大的意義,這是我的第一個MCV項目,認爲我現在將更多地使用ViewModel。 – chris

相關問題