首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >大量使用ViewBag

大量使用ViewBag
EN

Stack Overflow用户
提问于 2011-11-30 23:09:02
回答 2查看 1.4K关注 0票数 6

我在我的MVC应用程序中大量使用ViewBag,这被认为是不好的做法吗?我不确定是花时间创建ViewModels (然而我认为这更适合于MVVM而不是MVC),还是继续大量使用ViewBag。支持和反对这一点的理由是什么?示例控制器方法将返回它的模型(通常是一个简单的域实体)以及对ViewBag的以下调用:

代码语言:javascript
复制
            ViewBag.TotalItems = data.Count();
        ViewBag.FilteredItems = gridFilters;
        ViewBag.Action = "Events";
        ViewBag.Area = "People";
        ViewBag.EntityID = person.EntityID;
        ViewBag.OrganisationID = ID;
        ViewBag.Name = string.Format("{0} {1}", person.FirstName, person.LastName);
        ViewBag.IsEnabled = person.IsEnabled;
        ViewBag.EntityID = person.EntityID;
        ViewBag.Favourited = users.IsOnUserFavourites(person.EntityID);

        ViewBag.Columns = userColumns;

        ViewBag.Title = "Person : " + string.Format("{0} {1}", person.FirstName, person.LastName) + " - Events";
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-30 23:32:26

像这样的问题通常会从两边得到答案。许多人觉得像这样使用ViewBag是一个糟糕的设计(包括我自己)。这会降低你的控制器的可测试性。视图不是强类型的,等等。

使用ViewModel通常是一个很好的实践。与其让您的模型成为域模型,不如创建一个特定于您正在显示的视图的模型。这样,它就可以100%定制,以满足您对此特定视图的需求。你会发现一旦你这样做了,你就不再需要使用ViewBag了。它有时会创建许多额外的代码(每个视图一个视图模型),但代码非常简单,更改一个视图不会破坏任何其他视图。

票数 9
EN

Stack Overflow用户

发布于 2011-11-30 23:16:06

为什么不用Person作为你的模型呢?这样,您就可以使用强类型视图。我个人的观点是,ViewBag几乎是“魔法字符串”,虽然它在你是唯一的开发人员的小范围内工作得很好,但在更大的应用程序和项目中,你几乎迫使每个人记住所有的魔法字符串是什么。此外,您不会获得使用模型和强类型视图时的类型安全。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8328083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档