1

我有一个 ViewBag.People 由 View 组成;

 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 搜索功能?

4

2 回答 2

8

我建议在您的 ViewModel 中传递该信息。从长远来看,它将保持清洁和可维护。这是一篇好文章:在 ASP.NET MVC 应用程序中使用 ViewModels 管理数据和组织代码

于 2012-06-15T11:20:26.597 回答
2

ViewBag只是一个dynamic包装器ViewData(它允许在运行时调用的属性成为将用于在 中查找值的键ViewData)。你可以ViewData这样查询:

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

更新所以你想查询选择列表本身?

这是剃刀视图中定义的函数:

@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)
于 2012-06-15T10:55:26.053 回答