好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

课程7+上课日志2.doc

13页
  • 卖家[上传人]: y****g
  • 文档编号:131872974
  • 上传时间:2020-05-10
  • 文档格式:DOC
  • 文档大小:364KB
  • / 13 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 课程7 MVC框架——更快更简单地开发网站上课日志2一、路由配置详解1、路由基本配置与含义MVC中不存在起始页的概念了,而是通过路由来访问的,在路由中配置即可在项目文件中找到App_Start文件夹,并在该文件夹下的RouteConfig.cs 文件中修改RegisterRoutes ()方法public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "Default",//指定规则的名称 url: "{controller}/{action}/{id}",//指明url格式:localhost/控制器名/Action名/传递的参数 //url: "{controller}/{action}/{id}-{id2}-{id3}",传递多个参数写法 defaults: new { controller = "AdminLogin", action = "Login", id = UrlParameter.Optional } ); }说明:name,url,defaults可以省略。

      2、路由配置扩展(1)可以创建多条路由规则,每条路由规则的name属性不能相同,这样的话输入请求url就可以有多种方式,比如下面的2个路由规则就可以输入{controller}-{action}或{controller}/{action}public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "Default2", url: "{controller}-{action}/{id}", defaults: new { controller = "AdminLogin", action = "Login", id = UrlParameter.Optional } ); routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "AdminLogin", action = "Login", id = UrlParameter.Optional } ); }(2)路由规则是有顺序的,如果被前面的规则匹配了,那么后面的就没有机会了,把上面2个路由规则位置对调,如果请求再输入localhost/AdminLogin-Login会发现报错。

      3)constraints参数及namespaces参数routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },// UrlParameter.Optional表示可选的意思 //路由规则增加一个参数constraints,可以给controller或Action增加约束(正则表达式)只能下面表示控制器只能是数字 constraints: new { controller=@"^\d+$"},constraints: new { controller=@"Home",action=@"Index|Test"},表示控制器为Home,action为Index或Test,那么其他的action就匹配不到的 //路由规则再增加一个参数namespaces,表示到指定的命名空间下去搜索控制器,可以指定多个命名空间(因为控制器可以放在不同的文件夹,甚至是不同的项目,那么控制器所在命名空间就一般不相同),默认会先在bin目录下面遍历所有的dll,依次查找这些dll中继承自Controller的类进行匹配。

      比如 namespaces: new string[] { "MvcApplication1.Controllers","MvcApplication1.User" } );还有建立了不是以Controllers结尾的控制器类命名空间时,就可以通过设置这个属性来让路由系统在url匹配时应该去找那些命名空间在实例7.1的基础上完成图书信息展示以及图书信息的增删改查功能——简称实例7-2二、为实例7-2更新实体数据模型1、展示实例7-2效果2、更新实体数据模型这里最好是把原来的实体数据模型删除,重新添加实体数据模型,重新选择所需要的2张表AdminLogin、Book为什么不在原来的实体数据模型基础上更新模型?如果是数据库表中某字段做了更新,用【从数据库更新模型】比较好,如果是需要重新添加新表进来,最好是删除整个实体数据模型,然后重新添加实体数据模型,重新选择所需要的表,否则要生成后添加表的实体类比较麻烦提示:删除实体数据模型后重新添加实体数据模型后,相应的上下文类名称一般改变了,所以原来用到的上下文类名称要注意更改下。

      三、Razor布局页(系统默认布局页)新建一个项目,选择MVC4 web应用程序,选择“基本”,确定之后系统会自动生成很多文件重点说明下Content、Scripts文件夹)再新建一个Home控制器,再新建视图,此时勾选使用布局或母版页,但什么都不选,如下图所示此时生成的视图文件Index.cshtml代码基本为空,连 都没有@{ ViewBag.Title = "Index";}

      Index

      但是实际上虽然布局页为空,但系统还是用了Shared文件夹下的_Layout.cshtml作为布局的该布局页内容如下 @ViewBag.Title @Styles.Render("~/Content/css") @Scripts.Render("~/bundles/modernizr") @RenderBody() @Scripts.Render("~/bundles/jquery") @RenderSection("scripts", required: false)说明:上面使用@Styles.Render()、@Scripts.Render()引用App_start/BundleConfig.cs中的配置加载css、js文件,这样在视图文件中使用Scripts.Render()输出脚本包,Styles.Render()输出样式。

      @RenderBody()表示网页内容放置的地方,即呈现子页的主体内容@RenderSection("scripts", required: false)第一个参数指明:在子页面被渲染的节的名称,第二个参数:指定子页面这个节是否是必需的,如果指定了required:true;但是在子页面没有给这个名称的节的话,编译是通不过的系统是怎么做到采用Shared文件夹下的_Layout.cshtml作为模板的呢?因为Shared文件夹下还有一个非常特殊的文件_ViewStart.cshtml,这里规定了默认的布局为Shared文件夹下的_Layout.cshtml而且是所有的视图文件都默认使用这个布局@{ Layout = "~/Views/Shared/_Layout.cshtml";}_ViewStart.cshtml文件代码优先于任何视图,任何视图都可以重写LayOut属性来指定自己想要的模板布局页面四、如何使用自己布局页1、创建自己的布局页先在views/Shared文件夹中创建好一个布局页(MVC4布局页),如xzxLayout.cshtml2、应用自己的布局页然后在上面创建好的视图文件Index.cshtml中增加Layout = "~/Views/Shared/xzxLayout.cshtml";表示采用xzxLayout.cshtml作为母版,如下:@{ ViewBag.Title = "Index"; Layout = "~/Views/Shared/xzxLayout.cshtml";}当然也可以直接修改_ViewStart.cshtml文件的LayOut属性。

      3、改进布局页——留多个“空”布局页如何留多个空,用于填充内容呢?比如为_Layout.cshtml增加一个空 @ViewBag.Title @Styles.Render("~/Content/css") @Scripts.Render("~/bundles/modernizr")

      @RenderBody()
      @RenderSection("leftBar",true)//true表示必须要填充的空
      @Scripts.Render("~/bundles/jquery") @RenderSecti。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.