4.ASP.NET MVC 5.0 视图之模型绑定
大家好,这篇文章,我将向大家介绍ASP.NET MVC的模型视图绑定,ASP.MVC的模型绑定分为两种:一种是动态绑定【Dynamic Binding】;还有一种就是强类型绑定【Strongly typed binding】;【PS--上一篇文章:3.怎样将ASP.NET MVC应用程序发布到IIS】
当我们从控制器向视图传递数据的时候,我们会返回一个ViewResult类型的对象,与此同时,我们在视图中可以使用Model对象获取控制器传递过来的数据。Model是WebViewPage泛型类的一个只读属性。
动态绑定和强类型绑定,有一些不同的地方需要知道。当我们使用动态绑定的时候,不能智能提示出来:Model对象的属性,方法等信息,只能手动写。使用强类型绑定就可以有智能提示。
1.我们先看看动态绑定。
创建一个MVC项目:MVCModelBanding。
新建一个Home控制器。新建一个Employee类,新建一个Index视图;
Employee类代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web; namespace MVCModelBanding.Models
{
public class Employee
{
/// <summary>
/// 员工ID
/// </summary>
public int ID { get; set; } /// <summary>
/// 员工姓名
/// </summary>
public string Name { get; set; } /// <summary>
/// 性别
/// </summary>
public Gender Gender { get; set; }
} /// <summary>
/// 性别枚举
/// </summary>
public enum Gender
{
Men,
Woman
}
}
Home控制器代码:
using MVCModelBanding.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc; namespace MVCModelBanding.Controllers
{
public class HomeController : Controller
{
// GET: Home
public ActionResult Index()
{
Employee emp = new Employee()
{
ID=,
Name="曹操",
Gender=Gender.Men
};
return View(emp);
}
}
}
Index视图代码:
@{
ViewBag.Title = "Index";
} <h2>Employee Records</h2>
<ul>
<li>@Model.ID</li>
<li>@Model.Name</li>
<li>@Model.Gender</li>
</ul>
可以看到这时候,Model是动态的;
运行程序,看看效果:
好了,这就是模型视图的:动态绑定,是不是很简单?
现在我们来看看,怎么使用强类型绑定吧。还是在Index视图中,加入下面的代码:
@model MVCModelBanding.Models.Employee
运行程序:效果还是一样。
下面,我们来讨论一下使用强类型绑定的优点。
我们在Home控制器中加入一个Create方法,来看看不使用强类型和使用强类型,有啥区别。
创建Create视图。
在Create视图中创建一个表单。
@{
ViewBag.Title = "Create";
} <h2>Create</h2>
@using (Html.BeginForm())
{
<table>
<tr>
<th>ID:</th>
<td>@Html.TextBox("ID")</td>
</tr>
<tr>
<th>Name:</th>
<td>@Html.TextBox("Name")</td>
</tr>
<tr>
<th>Gender:</th>
<td>@Html.TextBox("Gender")</td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="提交"/></td>
</tr>
</table>
}
在控制器获取表单数据:运行项目:
输入之后,提交:
可以看到,没有使用强类型的时候,我只能通过FormCollection对象,来获取表单数据。
使用强类型之后,我们就可以这样:
运行项目,输入值,点击提交:
可以看到,使用强类型,我们可以很方便的点出来Model的属性方法,也不用Formcollection获取表单值了,但注意,这里还是可以通过Formcollection取值。看下面:
大家是否有疑问,什么时候使用动态绑定,什么时候使用强类型绑定?很好,这个想法很好,当我们向视图传递任何类型的model对象的时候【不依赖于任何条件】,这时我们只能使用动态绑定,如果model的类型是确定的,我们最好使用强类型绑定。
好了上面就是,模型视图的动态绑定和强类型绑定,大家学会了么?
4.ASP.NET MVC 5.0 视图之模型绑定的更多相关文章
- Asp.Net MVC在过滤器中使用模型绑定
废话不多话,直接上代码 1.创建MVC项目,新建一个过滤器类以及使用到的实体类: public class DemoFiltersAttribute : AuthorizeAttribute { pu ...
- ASP.NET MVC 3.0 Controller基础
ASP.NET MVC 3.0 Controller基础 1.Controller类与方法 Controller(控制器)是ASP.NET MVC的核心,负责处理浏览器请求,并作出响应.Cotro ...
- 返璞归真 asp.net mvc (8) - asp.net mvc 3.0 新特性之 Model
原文:返璞归真 asp.net mvc (8) - asp.net mvc 3.0 新特性之 Model [索引页][源码下载] 返璞归真 asp.net mvc (8) - asp.net mvc ...
- 返璞归真 asp.net mvc (12) - asp.net mvc 4.0 新特性之移动特性
原文:返璞归真 asp.net mvc (12) - asp.net mvc 4.0 新特性之移动特性 [索引页][源码下载] 返璞归真 asp.net mvc (12) - asp.net mvc ...
- ASP.NET MVC 中的视图生成
关于 ASP.NET MVC 中的视图生成 在 ASP.NET MVC 中,我们将前端的呈现划分为三个独立的部分来实现,Controller 用来控制用户的操作,View 用来控制呈现的内容,Mode ...
- Profession ASP.NET MVC 2.0 NerdDinner示例可运行源码
最近一段时间在看JonGalloway等著作的<Profession ASP.NET MVC 2.0>.本书并没有按照常规的大部头书籍那样,按部就班的介绍MVC的概念等,而是在第一章直接引 ...
- 7.ASP.NET MVC 5.0中的Routing【路由】
大家好,这一篇向大家介绍ASP.NET MVC路由机制.[PS:上一篇-->6. ASP.NET MVC 5.0中的HTML Helpers[HTML帮助类] ] 路由是一个模式匹配系统,它确保 ...
- 2.第一个ASP.NET MVC 5.0应用程序
大家好,上一篇对ASP.NET MVC 有了一个基本的认识之后,这一篇,我们来看下怎么从头到尾创建一个ASP.NET MVC 应用程序吧.[PS:返回上一篇文章:1.开始学习ASP.NET MVC] ...
- ASP.NET MVC 自定义Razor视图WorkContext
概述 1.在ASP.NET MVC项目开发的过程中,我们经常需要在cshtml的视图层输出一些公用信息 比如:页面Title.服务器日期时间.页面关键字.关键字描述.系统版本号.资源版本号等 2.普通 ...
随机推荐
- 《算法导论》——顺序统计RandomizedSelect
RandomizedSelect.h: #include <stdlib.h> namespace dksl { /* *交换 */ void Swap(int* numArray,int ...
- tomcat 8 在线管理admin配置
在tomcat8下,更加注重安全性.如果要使用在管理控制台部署应用,需要修改更多的配置. 在$tomcat_base$/webapps/manager/META-INF/context.xml中 添加 ...
- C语言冷知识
C语言属强类型语言(1)编程语言分2种:强类型语言和弱类型语言.强类型语言中所有的变量都有自己固定的类型,这个类型有固定的内存占用,有固定的解析方法:弱类型语言中没有类型的概念,所有变量全都是一个类型 ...
- Linux jdk安装
Linux上一般会安装Open JDK,关于OpenJDK和JDK的区别:http://www.cnblogs.com/sxdcgaq8080/p/7487369.html 下面开始安装步骤: --- ...
- Java学习笔记(十二):java编译跨平台运行原理
class文件由java源代码通过javac编译器编译生成,只能为JVM所识别.
- Windbg断点调试
[文章主题] Windbg是Windows驱动调试的重要软件,也是必须学习的软件,前面的博客介绍了一些双机调试的环境配置,只要按照我所说的步骤一步步下来就可以完成环境搭建. 本文主要介绍如何调试sys ...
- Appium 学习一:环境搭建问题
1.安装Android-sdk http://tools.android-studio.org/index.php/sdk 问题1:下载 android-sdk_r24.4.1-windows.zip ...
- Codeforces Round #500 (Div. 2) [based on EJOI]
Codeforces Round #500 (Div. 2) [based on EJOI] https://codeforces.com/contest/1013 A #include<bit ...
- SSM框架整合的其它方式
---------------------siwuxie095 SSM 框架整合的其它方式 1.主要是整合 Spring ...
- 516. Longest Palindromic Subsequence最长的不连续回文串的长度
[抄题]: Given a string s, find the longest palindromic subsequence's length in s. You may assume that ...