Asp.net mvc ViewModel
来源:互联网 发布:节奏大师软件下载 编辑:程序博客网 时间:2024/06/11 19:56
MVC规定,View即V是纯UI,不允许包含任何的逻辑层,所以在上节实例中已经违反了MVC基本准则(上节实例也是初学者应该遇到的内容),在上例中违反MVC的体系架构规则如下:
1、显示全名——逻辑层
2、使用红色标识年龄大于50的。使用简单逻辑改变了HTML元素的外观——逻辑层
ViewModel
面对可能的问题,微软就会提供解决该问题的方法,提出ViewModel,ViewModel是ASP.NET MVC应用中的隐式声明的层,用来维护Model和View之间的数据传递,是View的数据容器。
Model和ViewModel区别
Model是业务相关数据,是由业务和数据结构构建的模型,而ViewModel 是视图相关的数据,是根据View创建。
工作原理流:
1、用户提出需求,Controller处理用户的交互逻辑,执行简单的判断。
2、Controller获取一个或者多个Model数据
3、Controller决策使用哪个View最符合用户请求
4、Controller将根据Model数据和View需求创建并初始化ViewModel对象
5、Controller将ViewModel数据以ViewData或者ViewBag或者强类型的View等对象传递到View中,并返回View。
ViewModel分别与View,Model关联方式:
1、显示全名——逻辑层
2、使用红色标识年龄大于50的。使用简单逻辑改变了HTML元素的外观——逻辑层
ViewModel
面对可能的问题,微软就会提供解决该问题的方法,提出ViewModel,ViewModel是ASP.NET MVC应用中的隐式声明的层,用来维护Model和View之间的数据传递,是View的数据容器。
Model和ViewModel区别
Model是业务相关数据,是由业务和数据结构构建的模型,而ViewModel 是视图相关的数据,是根据View创建。
工作原理流:
1、用户提出需求,Controller处理用户的交互逻辑,执行简单的判断。
2、Controller获取一个或者多个Model数据
3、Controller决策使用哪个View最符合用户请求
4、Controller将根据Model数据和View需求创建并初始化ViewModel对象
5、Controller将ViewModel数据以ViewData或者ViewBag或者强类型的View等对象传递到View中,并返回View。
ViewModel分别与View,Model关联方式:
View将变成ViewModel的强类型的View,Model却和ViewModel是互相独立的,Controller将根据Model对象创建并初始化ViewModel对象。
1、在项目中创建一个叫ViewModels的文件夹。
2、在ViewModels中新建一个TeacherViewModel
为了更好的掌握ViewModel,决定将年龄用不同的颜色显示,当前用户也要在View中显示。
using System;using System.Collections.Generic;using System.Linq;using System.Web;namespace Mvc_一.ViewModels{ public class TeacherViewModel { public string TeacherName { get; set; } public int TeacherId { get; set; } public int TeacherAge { get; set; } public string TeacherAgeColor { get; set; } public string UserName { get; set; } }}
3、在上节例子中的强View类型修改为TeacherViewModel
@model Mvc_一.ViewModels.TeacherViewModel4、使用下面的代码替换掉View的内容
@model Mvc_一.ViewModels.TeacherViewModel@{ Layout = null;}<!DOCTYPE html><html><head> <meta name="viewport" content="width=device-width" /> <title>GetTeacherView</title></head><body> Hello @Model.UserName <hr /> <div> <b>Teacher Details:</b><br /> Teacher Name:@Model.TeacherName<br /> Teacher Id:@Model.TeacherId<br /> <span style="background-color:@Model.TeacherAge"> Teacher Age:@Model.TeacherAge</span> </div></body></html>5、在GetTeacherView中,获取Model数据并且强制转换为ViewModel对象。
public ActionResult GetTeacherView() { Teacher t = new Teacher(); t.TeacherName = "John"; t.TeacherId = 101010; t.TeacherAge = 55; TeacherViewModel tViewModel = new TeacherViewModel(); tViewModel.TeacherName = t.TeacherName; tViewModel.TeacherId = t.TeacherId; tViewModel.TeacherAge = t.TeacherAge; if (tViewModel.TeacherAge > 50) { tViewModel.TeacherAgeColor = "Red"; } else { tViewModel.TeacherAgeColor = "Black"; } tViewModel.UserName = "Administrator"; return View("GetTeacherView",tViewModel); }6、测试结果,此View中不包含任何业务逻辑
A | explian:
1、每个View都有其对应的ViewModel。
2、努力将Model和ViewModel相互独立。
3、尽管ViewModel包含与Model几乎相同的属性,微软建议每次都创建一个ViewModel,让每个View都对应一个ViewModel。
4、如果一个View只显示Model数据不包含任何呈现逻辑,不创建ViewModel就会无法满足未来的需求,倘若未来需要添加新的数据,开发人员就必须从头开始创建全新的UI。
转载请标明出处 http://blog.csdn.net/jasonhds/ 版权所有,翻版必究~谢谢合作!
0 0
- Asp.net mvc ViewModel
- 使用dynamic在ASP.NET MVC中应用匿名ViewModel
- Asp.Net MVC之ViewData字典与ViewModel模式
- ASP.Net MVC中 ViewBag, ViewData, TempData, ViewModel 的区别
- Asp.Net MVC之ViewData字典与ViewModel模式
- Asp.Net MVC之ViewData字典与ViewModel模式
- MVC ViewModel
- HTML5, jQuery Mobile and ASP.NET MVC 4 – Using the ViewModel between the model and controller
- HTML5, jQuery Mobile 和 ASP.NET MVC 4——在模型和控制器之间使用ViewModel
- \t\tAsp.Net MVC之ViewData字典与ViewModel模式
- MVC 中的 ViewModel
- ASP.NET MVC 框架
- ASP.NET MVC 框架
- ASP.NET MVC
- ASP.NET MVC框架
- ASP.NET MVC框架
- ASP.NET MVC
- Asp.Net Mvc Study
- Java ClassLoader基础及加载不同依赖 Jar 中的公共类
- Android Drawable讲解
- MySQL对换2张表的表名
- 轻松把玩HttpClient之封装HttpClient工具类(五),携带Cookie的请求
- python 的日志logging模块学习
- Asp.net mvc ViewModel
- Web应用——驾培管理系统之框架搭建
- PAT (Basic Level) Practise (中文)1020. 月饼 (25)
- Centos7.2中DNS服务named无法启动问题解决方案
- c语言学习笔记---存储类型auo,register,extern,static
- C语言如何求两个数的最大公约数和最小公倍数。
- Java文件操作
- c 语言unique 实现
- Oracle录屏命令spool的使用