【ASP.NET MVC系列】详解View

本篇文章内容属于ASP.NET MVC系列视图篇,主要讲解View,大致内容如下:

1.Views文件夹讲解

2.View种类

3.Razor语法

4.对视图的基本操作

 

一   Views文件夹

(一) Views文件夹下常用文件种类

 分析:

1.ASP.NET MVC页面基本被放在Views文件夹下;

2.利用APS.NET MVC模板生成框架,Views文件夹下的默认页面为.cshtml页面;

3.ASP.NET MVC默认页面为Razor格式的页面,因此默认页面为.cshtml页面;

4.ASP.NET MVC中,支持WebForm页面,即.aspx页面;

5.ASP.NET MVC中,支持静态html页面;

(二) 默认Views文件夹包含内容

 分析:

1.这里没添加Account控制器;

2).默认约定:在Controllers新增一个控制器,就会默认地在Views文件夹下新增一个视图问价,用来存放该控制器添加的视图,如上图中增加Home控制器,

在Views下就自动新增加Home文件,用来存放是Home控制器视图; 

二 视图种类

(一) 起始视图——_ViewStart.cshtml

分析:

1.打开_ViewStart.cshtml文件,我们发现该文件是引用Shared文件夹下的_Layout.cshtml文件,_Layout.cshtml是什么文件?布局页,稍后将分析;

2.我们来做如下动作

(1)将_ViewStart.cshtml内容注释掉,且添加一个div内容

(2)添加控制器_ViewStartDemoController和Index.cshtml视图

(3)运行程序,访问视图:http://localhost:2016/_ViewStartDemo/Index

 分析:

查看html

(二)布局视图

如上,我们分析了_VeiwStart.cshtml文件,我们发现里面有一段代码

1
2
3
@{
     Layout = "~/Views/Shared/_Layout.cshtml";
}

不理解这局话不要紧,它采用的Razor语法格式,将稍后与大家分享Razor,但我们看到了_Layout.cshtml文件,该文件即是Views文件夹下,Shared文件夹下的_Layout.cshtml视图

1.查看_Layout.cshtml视图

 

分析:

(1)_Layout.cshtml基本结构就是HTML基本结构(其实,.aspx和.cshtml结构,均是html结构);

(2)我们发现在<body></body>区域,有两个后台代码:@RenderBody()和@RenderSection()。@RenderBody()表示视图体,@RenderSection()表示部分视图和节点;

(3)我们将程序运行起来,看看

分析:

(1)我们发现最终呈现的页面由两部分组成:Layout.cshtml页面(由_ViewStart.cshtml页面引用_Layout.cshtml页面实现)和Home控制器下的Index页面;

(2)_Layout.cshtml到底是什么?布局页,相当于WebForm的模板页面;

(3)下面我们来定义一个模板页

 

(三)强类型视图

 何为“强类型视图”?Controller向View传递少量数据,一般情况,我们可以归为两大类别:弱类别传递(ViewBag,ViewData,TempData)和强类别传递(强类型视图)。然而,在实际操作中,当涉及大量数据时,

弱类别就显得不是那么方便,此时,一般采用强类型视图。强类型视图一般由三部分构成,即控制器层,视图层和模型层,三者之间调用关系可表示为:

 

 

 1.创建一个强类型视图

(1)在Model文件夹添加一个UserInfo类

1
2
3
4
5
public  class  UserInfo
     {
         string  UserName {  get set ; }
         string  UserAddress {  get set ; }
     }

(2)在控制器PartialViewDemo中添加一个方法QiangLeiXing(),并添加视图

(3)强类型视图分析

使用强类型视图,从控制器向视图传递一个在两端都是强类型的模型对象,从那个人获得智能感知、编译检查等好处。在Controller方法中,可以通过向重载的View方法中传递模型实例来指定模型。

1
2
3
4
5
6
7
8
9
10
public  ActionResult QiangLeiXingView()
        {
            List<UserInfo> List_UserInfo =  new  List<UserInfo>();
            for  ( int  i = 0; i < 2; i++)
            {
                List_UserInfo.Add( new  UserInfo() { UserName =  "Alan_beijing"  + i, UserAddress =  "上海"  + (i++) });
            }
            ViewBag.List_UserInfo = List_UserInfo;
            return  View(List_UserInfo);
        }

下一步是告知视图哪种类型的模型正在使用@model声明。注意,这里需要输入模型的完全限定名(名称空间和类型名称)

1
@model IEnumerable<ViewDemo.Models.UserInfo>

对应View

1
2
3
4
5
6
7
8
9
10
11
12
13
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值