ASP.NET MVC 视图学习,纯干货

最近用MVC专门为本身作了一个网站,用来记录文章心情和日记。加上和同事的一些交流感受颇深。因此想把13年买的MVC 4高级编程从新看一遍,记录一些东西,之后应该用的到。视图老是被控制器渲染,由于控制器为视图提供了要渲染的数据,这里我高度精简了视图的使用技巧。html

指定视图web

当不指定视图名称时,按照约定返回视图ajax

若是想渲染相同目录下的其余视图,直接指定名称 view("motIndex")编程

若是指定其余目录的视图,使用view("~/Views/Example/Index.cshtml").为避免视图引擎查找机制,需提供视图的扩展名。布局

ViewData和ViewBag,强类型性能

  数据从控制器到视图是经过ViewData的ViewDataDictionary,ViewBag是Viewdata的动态封装器。具体差别能够查看:TempData,ViewData和ViewBag的比较网站

  ViewData包含一个额外的Model属性,当使用强类型时,后台会先把值赋给ViewData.Model属性。对于视图中常常使用的Model命名空间,较好的办法就是在Views目录下web.config中进行声明。ui

有同事说不建议使用太多ViewData,会影响性能,这个我持保留意见,之前一直不知道页面上的强对象model就是ViewData里面的属性编码

Razor语法spa

HTML编码

通常只会使用RAW进行编码,可是对于JS编码不多用到,之后要注意了

Razor:@Html.Raw()

JS:@Ajax.JavaScriptStringEncode()

布局

@RenderBody()

@RenderSection("Footer") 和@RenderSection("",required,false) ,子页面使用方法:@section Footer{}

视图中没有定义的section,设置一些默认内容:@if(IsSectionDefined("Footer")){    RenderSection("Footer");}else{    //代码}

ViewStart

若是多个视图同用一个布局页,会产生冗余,也很难维护,会先于同目录下任何视图执行,也能够递归的应用到子目录的任何视图

部分视图

部分视图我以为在MVC中应该重点使用,一个页面由多个部分视图组合,部分视图和强类型Model结合使用起来很是方便。

不通过Controll的部门视图:Html.RenderPartial("GetName");
须要通过Controll的视图@Html.RenderAction("Datagrid", "DataList", new { area = "Common" });ajax加载: $("xx").load('/Home/Index')
相关文章
相关标签/搜索