复制大佬的,侵权请联系我主动删除

1.js/css合并

在之前的crud例子中,我们引入js/css脚本的方式和平常的web开发一样

  1. <script src="~/Scripts/jquery-1.8.2.min.js"></script>
  2. <script src="~/Scripts/jquery.validate.min.js"></script>
  3. <script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>

但是mvc框架提供了一个强大的js/css脚本合并功能

我们找到App_Start文件夹下的BundleConfig.cs类

双击打开

虽然代码看不懂,但是我们可以从中看到一大堆引入js和css脚本的路径

下面我们模仿其格式,尝试自己添加

  1. bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
  2. "~/Scripts/jquery.unobtrusive*",
  3. "~/Scripts/jquery.validate*"));
  4. //自己添加的ScriptBundle--MyScript
  5. bundles.Add(new ScriptBundle("~/bundles/MyScript")
  6. .Include("~/Scripts/jquery-1.8.2.min.js",
  7. "~/Scripts/jquery.validate.min.js",
  8. "~/Scripts/jquery.validate.unobtrusive.min.js"));
  1. //开启合并压缩功能
  2. BundleTable.EnableOptimizations = true;

ok,搞定~

这就完成了j脚本的合并引用

那么之前的视图页就不需要之前的方式了

现在我们将原来的三个js脚本引用删掉

换上新代码

  1. @Scripts.Render("~/bundles/MyScript")//此处的路径填写new ScriptBundle("~/bundles/MyScript")中的路径名,这是可以随意命名的,譬如也可以变这样:new ScriptBundle("~myjs")

我们通过开发人员工具来看看两次的对比

未使用js合并之前

发送了三个js请求到服务器

使用js合并之后

三个请求合为一个,当程序规模比较大的时候页面中的js/css引用非常多,如果按照正常的方式来引用脚本会向服务器发送大量的请求

js合并功能帮我们解决了这个问题,而且它不仅仅是将三个js文件合并在一起,还进行了压缩优化,可以通过服务器的相应正文看到

使用css合并压缩也是一样的,根据BundleConfig.cs中的格式添加一个StyleBundle在引用就搞定~

神技能,get it!

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

2.HtmlHelper,UrlHelper

在mvc框架中为程序员提供了一些能够进行快速看法的帮助类

下面举例子介绍HtmlHelper和UrlHelper类

(1)Url.Action与Url.RouteUrl

回想一下之前的crud例子

我们在写url地址的时候都是直接写死的

例如:

  1. <td>
  2. <a href="/Home/Create">新增</a>
  3. </td>

这样看起来似乎没有什么问题

但是在mvc中这就是一个隐藏的巨大问题

因为在mvc中,我们可以随意的通过配置路由在更改url的请求格式!

  1. routes.MapRoute(
  2. name: "Default",
  3. //之前的路由配置
  4. //url: "{controller}/{action}/{id}",
  5. //现在改为:
  6. url: "{action}/{controller}/{id}",
  7. defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
  8. );

这么一来,新增超链接请求的就是Create控制器下面的Home方法

但是服务器端只有Home控制器下的Create方法!如果不对url进行修改的话会返回无法找到该方法的错误

那么就改呀

但是仔细想想

如果项目规模非常大,url非常多

难道要一个个去改吗?!

先不说花费大量功夫终于改完了

突然接到通知说路由配置又要改

oh~shit!

但是不要慌~

万能的mvc框架为你提供了解决方案~

将之前的url改为使用UrlHelper的格式

使用Url.Action方法

第一个参数指定action方法名,第二个参数指定控制器名

之后生成运行,查看生成的新增超链接

搞定~而且使用UrlHelper类生成的超链接是根据路由配置来生成的

程序员再也不用操心前台url的格式了~

(但是这里看到这个url有点奇怪,怎么只有Create没有Home,这是因为在路由配置中默认的控制器就是Home,而默认的action为Index,如果请求的控制器或者action方法是默认的它直接省略不写~)

使用Url.Action方法是根据路由表中的第一个路由来生成的

但是通常路由表中的路由不仅仅是一个,也有可能很多个

这时候如果我们需要根据第n个路由配置来生成url怎么搞?

使用Url.RouteUrl方法

如图所示

该方法可以根据指定的路由名称来生成url

mvc基础知识(1)的更多相关文章

  1. Spring MVC基础知识整理➣拦截器和自定义注解

    概述 Spring MVC中通过注解来对方法或者类进行动态的说明或者标注,类似于配置标识文件的属性信息.当标注的类或者方式被使用时候,通过提取注解信息来达到对类的动态处理.在 MVC中,我们常用的注解 ...

  2. Spring MVC基础知识整理➣环境搭建和Hello World

    概述 Spring MVC属于SpringFrameWork的产品,采用Model-View-Controller进行数据交互,已经融合在Spring Web Flow里面.Spring 框架提供了构 ...

  3. MVC基础知识

    1.View中获取Control和View: //获取控制器名称: ViewContext.RouteData.Values["controller"].ToString(); / ...

  4. MVC 基础知识

    一. MVC架构1.MVC模式是一种严格实现应用程序各部分隔离的架构模式.隔离:分离关注点,松耦合2.模型(Model) 代表着核心的业务逻辑和数据.模型封装了域实体的属性和行为3.视图(View) ...

  5. Spring MVC基础知识整理➣Spring+SpringMVC+Hibernate整合操作数据库

    概述 Hibernate是一款优秀的ORM框架,能够连接并操作数据库,包括保存和修改数据.Spring MVC是Java的web框架,能够将Hibernate集成进去,完成数据的CRUD.Hibern ...

  6. Spring MVC基础知识整理➣国际化和异常处理

    概述 Spring框架为WEB项目提供了国际化以及异常处理机制.所谓的国际化也就是不同国籍,显示不同国籍的语言与符号.异常处理,也就是能够捕获WEB项目下的所有异常信息,并能处理记录这些异常信息机制. ...

  7. Spring MVC基础知识整理➣数据校验与格式化

    概述 将view中Form的数据提交到后台之后,后台如何验证数据的有效性?在这里Spring MVC提供了相应的Hibernate类包(hibernate-validator-4.3.1.Final. ...

  8. Spring MVC基础知识整理➣View与Controller数据交互

    概述 Spring MVC是由View—Controller—Model组成,其中View和Controller的数据交互,成为了关注的核心点.MVC中,我们将View中的数据传递到Controlle ...

  9. ASP.NET MVC基础知识

    1.MVC项目文件夹说明 App_Data:用来保存数据文件,比如XML文件等: App_Start:包含mvc系统启动的相关类: Controller:存放整个项目“控制器”的代码文件: Model ...

随机推荐

  1. PAT L3-008 喊山(广搜)

    喊山,是人双手围在嘴边成喇叭状,对着远方高山发出“喂—喂喂—喂喂喂……”的呼唤.呼唤声通过空气的传递,回荡于深谷之间,传送到人们耳中,发出约定俗成的“讯号”,达到声讯传递交流的目的.原来它是彝族先民用 ...

  2. C++重载、重写(覆盖)、隐藏

    类成员函数中重载/重写(覆盖)/重定义(隐藏)的区别? 答:分别简单讲述一下函数重载,函数覆盖,函数隐藏的概念与特征: 函数重载:重载函数通常用来命名一组功能相似的函数 1.函数要在相同的类域 2.函 ...

  3. springboot的yaml基础语法与取值,配置类,配置文件加载优先级

    1.基本语法k:(空格)v:表示一对键值对(一个空格必须有):以空格的缩进来控制层级关系:只要是左对齐的一列数据,都是同一个层级的属性和值也是大小写敏感: server: port: 8081 pat ...

  4. [z]Windows 下基于 Eclipse 的可视化远程 Linux C/C++ 开发环境搭建

    http://blog.csdn.net/lostaway/article/details/8086056 1.简介 Windows 下远程 Linux 开发工具,比较著名的就是 WinGDB 和 M ...

  5. UI设计,你为什么不能把标题做的更明显呢?

    在设计中标题常常被重视,标题即是文案信息的精华提炼,那么如何能把标题在很多文案信息中脱颖而出就是设计师所要做的工作,前面的文章说过对比可以凸显主题,这期是在对比合理的前提下更进一步的处理方法,我们可以 ...

  6. Fully Update And Upgrade Offline Debian-based Systems

    Let us say, you have a system (Windows or Linux) with high-speed Internet connection at work and a D ...

  7. OSGi 系列(十四)之 Event Admin Service

    OSGi 系列(十四)之 Event Admin Service OSGi 的 Event Admin 服务规范提供了开发者基于发布/订阅模型,通过事件机制实现 Bundle 间协作的标准通讯方式. ...

  8. hdu-1251(string+map)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1251 思路:重点是用gets输入,而且用a[20],不能直接输入string类型的. #include ...

  9. Django入门与实践-第16章:用户登录(完结)

    # myproject/settings.py LOGIN_REDIRECT_URL = 'home' EMAIL_BACKEND = 'django.core.mail.backends.conso ...

  10. changetoutf-8

    import chardet import os # ANSI文件转UTF-8 import codecs import os def strJudgeCode(str): return charde ...