您的位置:首页 > 编程语言 > ASP

ASP.net MVC简介及Razor语法

2018-03-05 23:02 351 查看
MVC:模型(Model)         视图(View)          控制器(Controller)
项目的创建:新建项目→VisualC#→ Web→ASP.NET Web应用程序,不要勾选 (将Application Insights添加到项目)→确定→Empty (勾选MVC),不要勾选Host in the cloud
控制器的创建:在Controllers点击右键添加控制器,控制器的名字都以Controller结尾
视图的创建:在Views文件夹下和Controllers名字一样的文件夹下添加视图,名字要和Controller里的方法名字一致
模型的创建:就添加一个普通的类
cshtml叫做Razor模板
cshtml模板就是简化HTML的拼接的模板,最终还是生产html给浏览器显示,不能直接访问cshtml文件
 Razor语法:  1. Razor语法:@启动的区域为标准的C#代码,其他部分是普通的html代码
                    2.用法:a)@{string a="abc";}     @a     @{C#代码块}
                              b)@a        直接输出a的值:abc
                               c)@Model.dog.Name
                              d)@if(), @foreach()等C#语句
                                     @{string[] strs={"rupeng","baidu","qq"};}
                                     @foreach(string s in strs)
                                         {
                                           @s
                                          }
@:强制转换成为html
<span>生成的HTML文件里会有<span>标签,<text>在生成的HTML里不存在<text>标签,是直接显示内容
@{bool isok=true;}
<div style='color:@(isok?"red":"green")'></div>      
@{string s1="<a href='www.rupeng.com'>rupeng</a>";}
@s1             默认的@会把字符串的内容进行htmlencode显示
@Html.Raw(s1)     如果不想encode显示就用Html.Raw()    Raw就是原始的意思
注释:@*       *@
href后面的是超链接的地址。
而scr往往是内容的地址
如果cshtml中任何html标签的属性中以"~/"开头,则会自动镜像虚拟路径的处理,当然一般是给<script>的src属性,<link>的href属性,<a>标签的href属性,<img>的src属性用的
html标签的任何属性的值如果是C#的值,那么如果是bool类型的值,那么值是false,则不会渲染这个属性,如果值是true,则会渲染成"属性名=属性名"  主要用于<input>标签还有下拉列表
总结:
1.@就是C#,<aaa></aaa>就是html
2.如果想让被识别成html的当成C#那就用@()
3.如果想让被识别成C#的当成html,用<span>等标签,如果不想生成额外的标签,就用    <text></text>
4.如果不想对内容进行htmlencode显示就用@Html.Raw
5.属性的值如果以"~/"开头就会进行虚拟路径处理
6.属性值如果是bool类型,如果是false就不输出这个属性,如果是true就输出"属性名=属性名"<input type="checkbox"   checked="@b1"/>
@this.GetType().Assembly.Location获得文件的路径
cshtml文件最后会编译成为一个动态的程序集
dynamic是C#中提供的一个语言,就像JavaScript一样的动态语言,到运行的时候再去发现属性的值或者调用方法
var和dynamic的区别:var是在编译的时候确定,dynamic是允许的时候动态确定的;var变量不能指向其他类型                                          的,dynamic可以
var只能取值不能赋值,是只读属性
Controller给View传递数据的方式:
1.ViewData:以ViewData["name"]="rupeng",string s=(string)ViewData["name"]这样键值对的方式进行      数据传送
2.ViewBag:ViewBag是dynamic类型的参数,是对ViewData一个动态类型的封装,用起来更方便,和ViewData共      同操作一个数据
3.Model:可以在Controller中通过return View(model)赋值,然后在cshtml中通过Model属性来访问这个对象
ViewDate
ViewBag
用Model传数据的时候有两种方式:1.强类型 需要备注(@model+namespace全名+类名)2.弱类型不需要备注





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: