mvc viewresult html,ASP.Net MVC View(视图)

View视图职责是向用户提供界面。负责根据提供的模型数据,生成准备提供给用户的格式界面。

支持多种视图引擎(Razor和ASPX视图引擎是官方默认给出的,其实还支持其它N种视图引擎,甚至你自己都可以写一套视图引擎)

View和Action之间数据传递(前后台数据传递)

弱类型 ViewData[""]

动态型 ViewBag //dynamic

动态类型Model

后台:return View(data); //存入 ViewData.Model

前台:Model //其实就是 WebViewPage.Model

@using 命名空间

强类型View

//Control Action

publicActionResult Index()

{return View(new User { UserName = "郭靖"});//ViewData.Model属性

}

//Index.cshtml

@model MvcApplication.Models.User

@Model.UserName

Razor视图引擎 语法

Razor为视图提供精简的语法,最大限度减少了语法和额外字符串

Razor通过理解标记的结构来实现代码和标记之间的顺畅切换。

@核心转换字符,用来 标记-代码 的转换字符串。

语境A:

@{

string schoolName="湖南第一师范";

}

cdc7cf36d6dc0ea7ef689f24b96de230.png

语境B:

2eaef5904a94a1826c05ba9ed29cb17b.png

Razor引擎识别 @ 和 <>html>

Razor 语法

Razor表达式自动使用了HTML编码

如果先向浏览器输出源html代码, 则使用System.Web.IHtmlString: @Html.Raw("

zouyujie

")

80fcf58ffb3c6a7828b0f8d003db0830.png输出结果zouyujuie

html源码

b9445b5f16dbc29f096db2536bd3e988.png

JS字符串编码

结果:

5b2ce752dcd1887f38296c085c9420ec.png

@代码块

@{ string s ="zouyujie";

int age =26;

}

@{Html.RenderPartial("TestPartial");}//调用无返回值方法

注释:@* ............*@

调用泛型方法:@(Html.SomeMethod());

混合代码与文本:

@if(1==1){我要输出文本在这里!@:我要输出文本在这里!

}

@转义:@@

操作web内置对象:@Request.RawUrl @Response.Write

@作用域与html标记混合使用:

@{

string userName="刘邦";

@userName

}

在@作用域中输出未转义的 HTML 代码

1.使用字符串描述输出

@{

string strHtm="

你好~

";

@strHtml

}

2.使用HTMLHelper输出

@{

@Html.Raw("

哇哈哈哈~

");

}

3.使用HtmlString类输出

@{

HtmlString htm =new HtmlString("

哈哈

");

@htm

}

4.使用MvcHtmlString输出

@{

var strHtml=MvcHtmlString.Create("

哈哈~

");

@strHtml

}

数据类型转换

用As....()方法转换 ,如:@("120".AsInt())

数值类型判断

用IsInt()方法,如 @(strAge.IsInt()?"是":"否")

路径转换

用Href()方法,如: @Href("~/Home/Index");

using System.Web.WebPages;//内部 为 string 扩展了很多 As..方法

HtmlHelper重用:相当于是在 视图中定义方法

@helper List(Listdogs){

  • @foreach (string s in dogs)

{

@s}}

@List(new List(){"ruiky","lisa","lucy"})

Razor 布局 – 整体视图模板

应用整体模板视图

1.@RenderBody()  //模板页里的占位符

2.@{

Layout = "~/Views/Shared/SiteLayout.cshtml";

View.Title="User List";

}

子页所有html代码都将替换到 模板页的@RenderBody()处

应用整体视图模板 - 多个"占位符"

3.模板页多个节:

@RenderSection("Footer")

子页面定义节点:

@section Footer{我们也要加入了!}

模板页判断是否为布局节方法,IsSectionDeined

@if(IsSectionDefined("Footer")){

@RenderSection("Footer");

}else

{“子页面”没有Footer~}

Razor 布局 – ViewStart

每个子页面都使用一个Layout指定布局。如果多个视图都用同一个布局就会产生冗余,修改维护麻烦。

_ViewStart.cshtml 可解决此问题

此文件代码优先于同目录及子目录下任何视图代码执行

View目录下自动添加的_ViewStart.cshtml

@{

Layout = "~/Views/Shared/_Layout.cshtml";

}

有了它,就可以为某个文件夹下所有的视图添加相同的视图布局了

因为这个文件代码优先于任何视图,所以任何一个视图都可以重写LayOut属性来指定自己想要的模板布局页面。

Razor 布局 – 分布视图

Action方法可以通过 PartialView方法以 PartialViewResult形式返回分部视图

一般用在Ajax请求部分代码Controller

publicActionResult PartialViewTest()

{

ViewData["Msg"] = "Hello world!";returnPartialView();

}

PartialViewTest.cshtml

@ViewData["Msg"]

Index.cshtml

@{Html.RenderAction("PartialViewTest");}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值