ASP.NET-实训内容
2016-12-25 14:29
169 查看
一、认识MVC模式
注意:*MVC是针对视图层来说的,意思这个MVC框架只是视图层的。(这里的MVC和java的MVC有区别)
控制器Controller:处理用户交互,与模型协作,并选择一个视图作为用户界面来显示。
视图View:显示结果的用户界面。
模型Model:用于封装与应用业务逻辑相关的数据以及用于控制访问和修改这些数据的业务规则。
二、安装VS2012版本以上的软件
App_Data:存放私有数据,如数据库文件
App_Start:存放项目的核心配置,如路由配置、绑定配置
Content:存放CSS,图像等内容
Controllers:存放Controller类,处理URL请求(控制器里面的文件必须以Controller结尾)
Models:存放业务实体类数据模型
Scripts:存放JavaScript类库文件和其他js文件
Views:存放视图文件,按控制器分组,如Views/Home(在view下文件夹和Controllers中的文件名字一样)
Views/Shared:存放共享的布局或视图
下面举个例子:
1.在Controller下面新建一个文件夹叫做HOME
然后添加一个控制器HomeController
在控制器里面添加一个方法,代码如下:
那么其中的Student这个对象在哪里定义呢?
前面我们已经说过了,在Model中定义实体数据类型
所以,在Model中定义一个类Student,代码如下
我们在Controller中使用任何实体数据类型的时候,都需要导入命名空间
所以,我们在定义Index2时需要导入
好了,现在控制器我们已经写好了,那么我们就需要在显示层中去添加要显示的内容了
即在View中创建一个Home文件夹,然后在文件夹中添加视图,视图名字就是控制器中的方法名
在这里需要注意:@model MvcApplication1_Test3.Models.Student
当我们添加了这句代码的时候,表示我们是强类型显示的。即一开始就知道model表示的是哪个实体类。
如果没有这句代码就表示我们是弱类型显示的,即不知道model表示的是哪个实体类,所以在我们的代码中
我们需要进行强制类型转换。
在完成代码后,我们开始运行,在浏览器原有地址的基础上+/控制器文件夹的名称/方法名
这样,我们就完成了一个MVC的过程。
此外,补充一点,从控制器方法中将数据传递到视图层View中的方法不仅仅只有View+model
还有ViewData、ViewBag、TempData
下面就一一的介绍一下这些方法
(1)ViewData:一种字典集合数据
控制器中:存数据
视图层中:取数据
(2)ViewBag:dynamic数据类型
控制器中:存数据
视图层:取数据
在这里需要注意一下,如果我们既使用了ViewData,也使用了ViewBag,如果他们的变量名相同,那么前面一个将会被覆盖。
(3)TempData:字典类型数据
控制器中:存数据
视图层中:取数据
最后,我们总结一下:
ViewData:适合传递单个数据,需要类型转换
ViewBag:适合传递单个数据,不需要类型转换
TempData::主要用来块多个动作方法传递数据
View()+Model适合传递模型数据,不需要类型转换
在上面的代码中,我们都用到了@,在这里解释一下:
在视图显示中,我们有两种显示的方法来显示C#代码,而不是页面的代码:
1.ASPX
使用这种方法的时候,我们在页面中显示C#代码时就是用<%%>,例如:
2.Razor
使用这个方法的时候,就是使用上面我们使用的@
在这里就不贴代码了。
推荐大家使用下面这一种
注意:*MVC是针对视图层来说的,意思这个MVC框架只是视图层的。(这里的MVC和java的MVC有区别)
控制器Controller:处理用户交互,与模型协作,并选择一个视图作为用户界面来显示。
视图View:显示结果的用户界面。
模型Model:用于封装与应用业务逻辑相关的数据以及用于控制访问和修改这些数据的业务规则。
二、安装VS2012版本以上的软件
App_Data:存放私有数据,如数据库文件
App_Start:存放项目的核心配置,如路由配置、绑定配置
Content:存放CSS,图像等内容
Controllers:存放Controller类,处理URL请求(控制器里面的文件必须以Controller结尾)
Models:存放业务实体类数据模型
Scripts:存放JavaScript类库文件和其他js文件
Views:存放视图文件,按控制器分组,如Views/Home(在view下文件夹和Controllers中的文件名字一样)
Views/Shared:存放共享的布局或视图
下面举个例子:
1.在Controller下面新建一个文件夹叫做HOME
然后添加一个控制器HomeController
在控制器里面添加一个方法,代码如下:
public ActionResult Index2() { //通过model传值(强) 1定义model实例并给属性赋值(数据库取值)2将得到的model实例交给view视图 3页面(转成强类型的)直接使用 Student stu = new Student(); stu.SID = 3; stu.SName = "snowlevel"; stu.SAge = 5; return View(stu); }
那么其中的Student这个对象在哪里定义呢?
前面我们已经说过了,在Model中定义实体数据类型
所以,在Model中定义一个类Student,代码如下
namespace MvcApplication1_Test3.Models { public class Student { public int SID { get; set; } public int SAge { get; set; } public string SName { get; set; } } }
我们在Controller中使用任何实体数据类型的时候,都需要导入命名空间
所以,我们在定义Index2时需要导入
using MvcApplication1_Test3.Models
好了,现在控制器我们已经写好了,那么我们就需要在显示层中去添加要显示的内容了
即在View中创建一个Home文件夹,然后在文件夹中添加视图,视图名字就是控制器中的方法名
@model MvcApplication1_Test3.Models.Student @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>Index2</title> </head> <body> <div> <h2>@Model.SID</h2> <h2>@Model.SAge</h2> <h2>@Model.SName</h2> </div> </body> </html>
在这里需要注意:@model MvcApplication1_Test3.Models.Student
当我们添加了这句代码的时候,表示我们是强类型显示的。即一开始就知道model表示的是哪个实体类。
如果没有这句代码就表示我们是弱类型显示的,即不知道model表示的是哪个实体类,所以在我们的代码中
我们需要进行强制类型转换。
@{ Student stu = Model; <h2>@stu.SID</h2> <h2>@stu.SAge</h2> <h2>@stu.SName</h2> }
在完成代码后,我们开始运行,在浏览器原有地址的基础上+/控制器文件夹的名称/方法名
这样,我们就完成了一个MVC的过程。
此外,补充一点,从控制器方法中将数据传递到视图层View中的方法不仅仅只有View+model
还有ViewData、ViewBag、TempData
下面就一一的介绍一下这些方法
(1)ViewData:一种字典集合数据
控制器中:存数据
ViewData["name"] = "test2";
视图层中:取数据
@ViewData["name"]
(2)ViewBag:dynamic数据类型
控制器中:存数据
ViewBag.data = "aaaaa";
视图层:取数据
@ViewBag.data
在这里需要注意一下,如果我们既使用了ViewData,也使用了ViewBag,如果他们的变量名相同,那么前面一个将会被覆盖。
(3)TempData:字典类型数据
控制器中:存数据
TempData["data"] = "bbbbb";
视图层中:取数据
TempData["data"]
最后,我们总结一下:
ViewData:适合传递单个数据,需要类型转换
ViewBag:适合传递单个数据,不需要类型转换
TempData::主要用来块多个动作方法传递数据
View()+Model适合传递模型数据,不需要类型转换
在上面的代码中,我们都用到了@,在这里解释一下:
在视图显示中,我们有两种显示的方法来显示C#代码,而不是页面的代码:
1.ASPX
使用这种方法的时候,我们在页面中显示C#代码时就是用<%%>,例如:
<%=model%>
2.Razor
使用这个方法的时候,就是使用上面我们使用的@
在这里就不贴代码了。
推荐大家使用下面这一种
相关文章推荐
- 在asp.net中长内容自动分页的实现
- 在ASP.NET中将数据直接输出成Excel内容
- asp.net中获取远端WEB页内容
- 在asp.net中长内容自动分页的实现
- 在ASP.NET中将数据直接输出成Excel内容
- 关于ASP.NET的缓存的详细内容
- ASP.net在页面所有内容生成后、输出内容前对页面内容进行操作
- asp.net中在当前页面组合form的内容,并提交
- Asp.Net防止刷新重复提交数据小记(摘自网上,具体出处不记得了,而且对其内容还没实践,暂且收入再说)
- 在asp.net中实现对webform上的一个textbox的内容的另存方法.
- asp.net的多行TextBox随内容增加自动增高而不显示滚动条!
- Asp.Net中DataGrid的模版列(TemplateColumn)内容控制简单方法。
- ASP.NET创建文件并写入内容
- 例程:ASP.NET实现从MSSQL中分块断点续传下载image字段内容
- 利用反射实现ASP.NET控件和数据实体之间的双向绑定,并且在客户端自动验证输入的内容是否合法
- ASP.net 写文件的函数(内容,路径,文件名) pcsky(原作)
- Asp.Net中DataGrid的模版列(TemplateColumn)内容控制简单方法。 选择自 TomMax 的 Blog
- 在asp.net中长内容自动分页的实现
- 使用ASP.NET Atlas开发随输入内容自动调整行数的textarea(转)
- Asp.net网站的ClickOnce自动部署(1)-自动部署的内容