MVC基础知识整理

来源:互联网 发布:心事谁人知谐音 编辑:程序博客网 时间:2024/06/05 00:08

ActionResult子类演示

    1、ViewResult() -->action方法中要想返回视图,则要使用ViewResult (MVC开发中用的最多)

    2、ContentResult() -->返回内容之用(特点,可以不需要有对应的视图) Home/ContentResultDemo中有示例

    3、JsonResult() -->HomeController 的JsonDemo() 可以用作ajax请求 ,注意:如果是get请求,则一定是要在Json()中写入:JsonRequestBehavior.AllowGet

    4、FileResult() -->HomeController 的FileResultDemo() 可以用作画验证码,也可以利用它来实现文件的下载

    5、HttpStatusCodeResult() --》用户自己设置需要响应的状态码

    6、JavaScriptResult 注意:JavaScript配合视图中的<script rc="">

    7、RedirectResult():执行页面跳转本质上是在响应报文头中产生了 Location:要跳转的页面的虚拟路径 命令

   8、RedirectToRouteResult :当系统中路由规则比较多的时候,可以由程序员指定使用哪个路由规则来生成url


_ViewStart.cshtml:

View根目录下的_ViewStart.cshtml 先执行 然后再执行对应文件夹下的_ViewStart.cshtml 最后执行访问的cshtml页面

.NET里面webform的后缀是aspx  WCF和WebService的后缀是asmx 一般处理程序后缀是ashx 


MVC布局页:

@RenderBody() 占位符 将来会被使用此布局的子页面内容覆盖掉 只能在layout中出现一次

@Style.Render(); @Script.Render(); 获取Bundle中的样式和js文件 根据虚拟路径找到该虚拟路径下注册好的所有物理文件响应给浏览器  使用原因:减少http请求 自动压缩js和css的大小 方便程序员调用


分部视图:

分部视图是什么? 类似于asp.net webform(aspx)中的自定义控件.ascx

作用:可以将相同的逻辑块写到分部视图中,供其他视图来使用

引用:

@Html.RenderAction(PartialView,controller )


@RenderSection(“script”,required:false) 表示script可以在子类中重写 也就是说有此占位符才可以在子类写js。RenderSection 所定义的标签,可以被子页面重写,如果required设置成true,则必须子页面重写,如果是false可以不重写也可以重写

 

在cshtml视图上,如果将视图变成一个List<GroupInfo>的强类型视图,那么在使用@Html.DisplayNameFor(a=>a.GroupId)会报错,这是因为Razor视图经过编译发现List是一个具体的class所以a就推断成List<GroupInfo>,可以通过将List<GroupInfo>改成IEnumerable<GroupInfo>来解决


html控件:

@Html.ActionLink("跳转","About","Home",new { word ="a"},new { @class="aa",@id="abc"})

相当于:<aclass="aa" href="/Home/About?word=a" id="abc">跳转</a>


MVC路由

/路由支持默认值 如下的Api

            routes.MapRoute(

                name: "Default",

                url: "Api/{controller}/{action}/{id}",

                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }

                //通过正则确定参数的类型

                ,constraints:new {id="\\d+"},

                //定义了此路由的命名空间

                namespaces: new string[] { "MVCRoute.Controllers" }

                //好处:

                //1、可以自动去MVC站点的bin目录查找指定命名空间下的控制器类,大大节省了查        找时间,效率更优

                //2、方便同一个路由规则在不同控制器之间的切换

           //忽略路由

           routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

           //忽略某一种拓展资源或拓展名

           routes.IgnoreRoute("{resource}.do/{*pathInfo}");

 

//MVC中有2种视图引擎 一种是aspx 另一种是Razor 并且排序为 1.aspx视图引擎 2.Razor视图引擎 使用此方法可以把aspx的搜索引擎屏蔽掉 提高搜索效率

  MVC项目下的Global文件中加入:

          ViewEngines.Engines.RemoveAt(0);

在继承当中 子类既有父类的一些方法和属性又有自身的方法或属性,使用 base和this区分使用的方法或属性是自身的还是父类的


访问修饰符:public:公开访问 可被所有成员访问

             internal:程序集内部访问  只可以被程序集内部访问

           private:私有成员 只允许本类中的成员访问

   protected :继承访问    允许本类及子类访问


0 0
原创粉丝点击