欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

asp.net mvc 快速学习之路(1)Razor视图

程序员文章站 2022-06-10 13:08:41
...

1、ViewBag 和 ViewData使用区别注意

  • 只有当要访问的关键字是一个有效的C#标识符时,ViewBag才起作用。(疑问,不理解),比如如果在ViewData["xx"]存放一个值,就不要使用ViewBag访问这个值。
  • ViewBag值不能作为动态值传递给扩展方法,比如@Html.TextBox("name",ViewBage.name);

2、渲染视图的重载

  • return View()
  • return view("/view/product/index.cshtml");
  • return view(model)
  • return PartialView();//如果布局是_ViewStart.cshtml将不渲染模板页

思考:在重写controller时,可以通过数据库配置将seo的title、key、description直接赋值。在_layout.cshtml使用,好像也可以在指定视图引擎中处理些事情


3、视图常用的名称空间

  • @model IEnumerable<mvcApplication1.Model.test>
  • @using mvcApplication1.Model @model test
  • 在config.web配置
<pages pagebaseType="System.Web.Mvc.WebViewPage">
    <namespaces>
           <add namespace="mvcApplication1.Model"/>
    </namespaces>
</pages>

 4、自定义T4视图模板

安装目录下:....\codeTemplates\ 拷贝到项目的根目录,去掉custom tool 的属性(不知道为什么要去掉)

5、代码表达式

  • 核心转换字符@用户来标识-代码的转换,有时候做代码-标识的转换字符(不全懂)
  • 出现有二义的表达式时候可以使用()来标识
  • @用@@表示

6、html编码

Razor默认是用html编码的,如果不需要则使用html.Raw处理

当在javascript中赋值给变量的时候,要使用javascript字符串编码,而不仅仅是html编码,这点很重要 使用@Ajax.JavaScriptStringEncode

7、代码块

两种情况必须使用{}

  • 多行代码
  • 调用没有返回值的方法

8、服务端注释

@*这里是注释内容*@

9、调用泛型必须使用()。这个和Razor的引擎解析有关系

10、模板页使用

指定模板

@{
Layout="~/views/shares/_layout.cshtml";
view.Title="index";//view 对象应该是ViewBag
}

 @RenderBody() 加载内容页的内容

@RenderSection("Footer") 视图页必须重写重载方法@RenderSection("Footer",false)非必须重载

设置默认值@if(IsSectionDefined("Footer")){RenderSection("Footer")else{//默认值 <span>默认值</span>}}

备注:_viewStart.cshtml优于其他视图先执行

11、配置第三方视图引擎

protect void Application_Start(){
  ViewEngines.Engines.Clear();
  ViewEngines.Engines.Add(new MyViewEngine());

}

 具体配置百度楼。

转载于:https://www.cnblogs.com/pursuitTA/archive/2012/10/30/2746984.html