asp.net-mvc – 使用ViewData或不使用ViewData
|
我一直在阅读Professional ASP.NET MVC 1.0书籍以及阅读其他来源,讨论在控制器中使用ViewModel而不是ViewData到Views.但后来我看到很多ViewData的例子被用在一些很难的场景中,除了从ViewData获得一些东西之外别无选择.但后来我读了一本像Pro ASP.NET MVC Framework的书,所有他谈到的只是ViewData,没有关于ViewModel的内容.那么ViewModel是一个非常新的概念还是什么? 我看到ViewModel是一个更好的方法,但它是一个可靠的替代方案吗?我的意思是ViewData在其他方面很容易获得,例如HtmlHelper对象,而ViewModel则不然.或者例如在自定义控件中使用它(http://www.codeproject.com/KB/custom-controls/MVCCustomControls.aspx).那么我是否根据不同的目标使用两者的组合或什么?如果我想在我的Extension方法中出于任何原因访问ViewModel怎么办?我迷失在这条路上.我知道ViewData不是强类型的,但您可以设置视图以指定类型,从而使您的ViewData键入,但我只是想知道.对ViewData有如此多的支持,但我知道ViewModel是一种更加抽象和分离的方式,也是一种类型化的方式.我只是不想在我需要获取某些数据的场景中自我缩短,例如可以从其他对象(如HtmlHelper类)轻松访问的ViewData. 思考?标准是什么?经验?我有点关闭,或者你只是使用一个组合,并且在其他情况下仍然使用ViewData,而不仅仅是将数据从Controller发送到View或者什么? 如果您根本不使用ViewData而是将ViewModel与控制器一起使用,那么您使用ViewModel似乎全有或全无,因此ViewData没有任何用途,因为您没有使用控制器设置任何内容,因此它在那一点没用?我混淆了任何人或离开这里吗?这让我自己感到困惑,这是肯定的. 解决方法好吧,ViewData是一种非常快速的实现方法.但是,你正在做很多字符串文字传递,这通常不是一件好事.您可以通过使用一些字符串常量来解决这个问题,这就是我对Session变量所做的事情,但我认为ViewModel是一种更好的方法.只要您可以使用ViewData,您还可以使用ViewModel. ViewModel不必只是您的域对象;它可能是一个辅助类,它不仅具有域对象,还有一些特定于视图的额外属性;这就是为什么它在那里.因此,使用ViewModel,您可以让编译器帮助您,并且从OO的角度来看,它比将密钥传递到字典要简单得多.我认为MVC在这里提供了一个很好的方法.它为那些需要“完成它”和更简洁的方法提供了快速和肮脏(不一定是坏事),这两者都非常容易使用. 如果您还没有阅读Scott Gurthie的ASP.NET MVC教程;我强烈推荐它: http://weblogs.asp.net/scottgu/archive/2009/04/28/free-asp-net-mvc-nerddinner-tutorial-now-in-html.aspx (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 使用MVC将数据导入局部视图或布局
- ASP.net Substitution 页面缓存而部分不缓存的实现方法
- ASP.NET WebApi:(405)方法不允许
- asp.net-mvc – ASP.NET MVC 5自定义错误页面
- asp.net – 从MVC视图中的模型访问displayName属性
- asp.net-mvc – 如何使用枚举值填充下拉列表?
- asp.net-mvc – 剃刀替换的优点(@href)
- asp.net – linq中的switch语句
- 部署ASP.Net MVC应用程序的最便宜的方法是什么?
- Razor页面在运行时无法在ASP.NET Core RC2中看到引用的类库
- asp.net-mvc-3 – 将复选框绑定到MVC中的int数组
- ASP.NET:使用混合的HTML格式本地化内容
- ASP.NET MVC 4 AJAX提交表单不工作
- asp.net-mvc-3 – 使用csvhelper(nuGET)和C#MVC导
- asp.net %$...%语法
- asp.net – DropDownList烦恼:相同的值不会触发
- ASP.NET成员资格 – 让用户使用以前的密码
- asp.net-mvc – 带编码文本的MVC3 TextBoxFor
- asp.net-mvc – EntityFramework.SqlServer未在W
- asp.net – 找不到指定文化或中性文化的任何资源
