课程7+上课日志2

上传人: y****g 文档编号:131872974 上传时间:2020-05-10 格式:DOC 页数:13 大小:364KB
返回 下载 相关 举报
课程7+上课日志2_第1页
第1页 / 共13页
课程7+上课日志2_第2页
第2页 / 共13页
亲,该文档总共13页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《课程7+上课日志2》由会员分享,可在线阅读,更多相关《课程7+上课日志2(13页珍藏版)》请在金锄头文库上搜索。

1、课程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: contro

2、ller/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

3、或controller/actionpublic 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

4、: 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

5、 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就匹配不到的 /路由规则

6、再增加一个参数namespaces,表示到指定的命名空间下去搜索控制器,可以指定多个命名空间(因为控制器可以放在不同的文件夹,甚至是不同的项目,那么控制器所在命名空间就一般不相同),默认会先在bin目录下面遍历所有的dll,依次查找这些dll中继承自Controller的类进行匹配。比如 namespaces: new string MvcApplication1.Controllers,MvcApplication1.User );还有建立了不是以Controllers结尾的控制器类命名空间时,就可以通过设置这个属性来让路由系统在url匹配时应该去找那些命名空间在实例7.1的基础上完成图书信

7、息展示以及图书信息的增删改查功能简称实例7-2二、为实例7-2更新实体数据模型1、展示实例7-2效果2、更新实体数据模型这里最好是把原来的实体数据模型删除,重新添加实体数据模型,重新选择所需要的2张表AdminLogin、Book。为什么不在原来的实体数据模型基础上更新模型?如果是数据库表中某字段做了更新,用【从数据库更新模型】比较好,如果是需要重新添加新表进来,最好是删除整个实体数据模型,然后重新添加实体数据模型,重新选择所需要的表,否则要生成后添加表的实体类比较麻烦。提示:删除实体数据模型后重新添加实体数据模型后,相应的上下文类名称一般改变了,所以原来用到的上下文类名称要注意更改下。三、R

8、azor布局页(系统默认布局页)新建一个项目,选择MVC4 web应用程序,选择“基本”,确定之后系统会自动生成很多文件。(重点说明下Content、Scripts文件夹)再新建一个Home控制器,再新建视图,此时勾选使用布局或母版页,但什么都不选,如下图所示。此时生成的视图文件Index.cshtml代码基本为空,连 都没有。 ViewBag.Title = Index;Index但是实际上虽然布局页为空,但系统还是用了Shared文件夹下的_Layout.cshtml作为布局的。该布局页内容如下 ViewBag.Title Styles.Render(/Content/css) Scrip

9、ts.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(scrip

10、ts, required: false)第一个参数指明:在子页面被渲染的节的名称,第二个参数:指定子页面这个节是否是必需的,如果指定了required:true;但是在子页面没有给这个名称的节的话,编译是通不过的。系统是怎么做到采用Shared文件夹下的_Layout.cshtml作为模板的呢?因为Shared文件夹下还有一个非常特殊的文件_ViewStart.cshtml,这里规定了默认的布局为Shared文件夹下的_Layout.cshtml。而且是所有的视图文件都默认使用这个布局。 Layout = /Views/Shared/_Layout.cshtml;_ViewStart.csht

11、ml文件代码优先于任何视图,任何视图都可以重写属性来指定自己想要的模板布局页面四、如何使用自己布局页1、创建自己的布局页先在views/Shared文件夹中创建好一个布局页(布局页),如xzxLayout.cshtml、应用自己的布局页然后在上面创建好的视图文件Index.cshtml中增加Layout = /Views/Shared/xzxLayout.cshtml;表示采用xzxLayout.cshtml作为母版,如下: ViewBag.Title = Index; Layout = /Views/Shared/xzxLayout.cshtml;当然也可以直接修改_ViewStart.cshtml文件的属性。、改进布局页留多个“空”布局页如何留多个空,用于填充内容呢?比如为_Layout.cshtml增加一个空 ViewBag.Title Styles.Render(/Content/css) Scripts.Render(/bundles/modernizr) RenderBody() RenderSection(leftBar,true)/true表示必须要填充的空 Scripts.Render(/bundles/jquery) RenderSecti

展开阅读全文
相关资源
相关搜索

当前位置:首页 > IT计算机/网络 > .NET

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号