ASP.net MVC随笔

一、razor语法
1、@就是C#,标签就是HTML
2、如果想让被识别成html的当成C#就用@()
3、如果想让识别成c#的当成html,用等标签,如果不想生成额外的标签,就用 标签
4、如果不想对内容进行htmlencode显示就用@Html.Raw()
5、属性的值如果以”~/”开头会进行虚拟路径处理
6、属性值如果是bool类型,如果是false就不输出这个属性,如果是true就输出”属性名=属性名”

二、Cshtml
1、cshtml是编译生成一个动态的程序集,在cshtml中写@this.GetType().Assembly.Logcaiton可以拿到编译生成的程序集的dll文件路径,反编译可以看到csthml最终生成一个类,类中就是在拼接html,类是继承自WebViewPage,后续用的@Model、@Html等都是WebViewPage类的成员。

三、Controller给View传递数据的方式
1、ViewData
ViewData[“name”]=”xhx”
2、ViewBag
ViewBag是dynamic类型的参数,是对ViewData一个动态类型封装,用起来更加方便,和ViewData共同操作一个数据。ViewBag.name等于ViewData[“name”]
3、Model
可以在Controller中通过return view(model)赋值,然后在cshtml中通过Model属性来访问这个对象。如果在cshtml中通过”@model类型”指定类型,则cshtml中的Model类型就是指定的强类型的,这样的cshtml叫”强类型视图”;如果没有指定”@model 类型”,则cshtml中的Model就是dynamic类型。

四、action参数
1、普通参数
2、Model参数
3、FormCollection,采用fc[“name”]方式访问

五、View的查找
1、return View()会查找Views的Controller名字的Action的名字的cshtml
2、return View(“Action1”),查找Views的Controller名字下的”Action1.cshtml”,如果找不到,则到特殊的Shared文件夹下找”Action1.cshtml”
3、Return View(“Action1”,model),注意如果model是字符串,则需要return View(“Action1”,(object)str)

六、其他类型的ActionResult
1、ViewResult
return View()
2、ContentResult
return Content()
3、RedirectResult
return Redirect()
4、FileStreamResult
return File()
5、JavascriptResult
return JavaScript()
6、JsonResult
return Json()
这些类都是ActionResult的子类

七、return View 和Redirect的区别
1、Redirect是让浏览器重定向到新的地址;return View是让服务器把指定的cshtml运行渲染后给到浏览器;
2、Redirect浏览器与服务器之间发生了两次交互;return View浏览器与服务器发生一次交互。
3、Redirect由于是两次请求,所以第一次设置的ViewBag等这些信息,在第二次是取不到的;而return View是在同一次请求中,所以ViewBag信息可以取到。
4、如果用Redirect,则由于是新的对Controller/Action的请求,所以对应的action会被执行到。如果用View,则是直接拿某个View去显示,对应的Action不会执行。
什么情况用View?服务器产生数据,想让一个View去显示的时候
什么情况用到Redirect?让浏览器去访问另一个页面的时候

你可能感兴趣的:(C#)