2012-06-15 71 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

相关问题