mvc基础知识(1)
复制大佬的,侵权请联系我主动删除
1.js/css合并
在之前的crud例子中,我们引入js/css脚本的方式和平常的web开发一样
- <script src="~/Scripts/jquery-1.8.2.min.js"></script>
- <script src="~/Scripts/jquery.validate.min.js"></script>
- <script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
但是mvc框架提供了一个强大的js/css脚本合并功能
我们找到App_Start文件夹下的BundleConfig.cs类
双击打开
虽然代码看不懂,但是我们可以从中看到一大堆引入js和css脚本的路径
下面我们模仿其格式,尝试自己添加
- bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
- "~/Scripts/jquery.unobtrusive*",
- "~/Scripts/jquery.validate*"));
- //自己添加的ScriptBundle--MyScript
- bundles.Add(new ScriptBundle("~/bundles/MyScript")
- .Include("~/Scripts/jquery-1.8.2.min.js",
- "~/Scripts/jquery.validate.min.js",
- "~/Scripts/jquery.validate.unobtrusive.min.js"));
- //开启合并压缩功能
- BundleTable.EnableOptimizations = true;
ok,搞定~
这就完成了j脚本的合并引用
那么之前的视图页就不需要之前的方式了
现在我们将原来的三个js脚本引用删掉
换上新代码
- @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地址的时候都是直接写死的
例如:
- <td>
- <a href="/Home/Create">新增</a>
- </td>
这样看起来似乎没有什么问题
但是在mvc中这就是一个隐藏的巨大问题
因为在mvc中,我们可以随意的通过配置路由在更改url的请求格式!
- routes.MapRoute(
- name: "Default",
- //之前的路由配置
- //url: "{controller}/{action}/{id}",
- //现在改为:
- url: "{action}/{controller}/{id}",
- defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
- );
这么一来,新增超链接请求的就是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)的更多相关文章
- Spring MVC基础知识整理➣拦截器和自定义注解
概述 Spring MVC中通过注解来对方法或者类进行动态的说明或者标注,类似于配置标识文件的属性信息.当标注的类或者方式被使用时候,通过提取注解信息来达到对类的动态处理.在 MVC中,我们常用的注解 ...
- Spring MVC基础知识整理➣环境搭建和Hello World
概述 Spring MVC属于SpringFrameWork的产品,采用Model-View-Controller进行数据交互,已经融合在Spring Web Flow里面.Spring 框架提供了构 ...
- MVC基础知识
1.View中获取Control和View: //获取控制器名称: ViewContext.RouteData.Values["controller"].ToString(); / ...
- MVC 基础知识
一. MVC架构1.MVC模式是一种严格实现应用程序各部分隔离的架构模式.隔离:分离关注点,松耦合2.模型(Model) 代表着核心的业务逻辑和数据.模型封装了域实体的属性和行为3.视图(View) ...
- Spring MVC基础知识整理➣Spring+SpringMVC+Hibernate整合操作数据库
概述 Hibernate是一款优秀的ORM框架,能够连接并操作数据库,包括保存和修改数据.Spring MVC是Java的web框架,能够将Hibernate集成进去,完成数据的CRUD.Hibern ...
- Spring MVC基础知识整理➣国际化和异常处理
概述 Spring框架为WEB项目提供了国际化以及异常处理机制.所谓的国际化也就是不同国籍,显示不同国籍的语言与符号.异常处理,也就是能够捕获WEB项目下的所有异常信息,并能处理记录这些异常信息机制. ...
- Spring MVC基础知识整理➣数据校验与格式化
概述 将view中Form的数据提交到后台之后,后台如何验证数据的有效性?在这里Spring MVC提供了相应的Hibernate类包(hibernate-validator-4.3.1.Final. ...
- Spring MVC基础知识整理➣View与Controller数据交互
概述 Spring MVC是由View—Controller—Model组成,其中View和Controller的数据交互,成为了关注的核心点.MVC中,我们将View中的数据传递到Controlle ...
- ASP.NET MVC基础知识
1.MVC项目文件夹说明 App_Data:用来保存数据文件,比如XML文件等: App_Start:包含mvc系统启动的相关类: Controller:存放整个项目“控制器”的代码文件: Model ...
随机推荐
- 【笔记】C#往TextBox的方法AppendText加入的内容里插入换行符
C# TextBox换行[huan hang]时你往往会想到直接付给一个含有换行[huan hang]符"\n"的字符[zi fu]串[zi fu chuan]给Text属性[sh ...
- python不用声明数据类型
不用声明变量一样,Python不用去声明函数的返回类型,是由于其“若类型”的语言特性决定的. 在其他语言中,例如C/C++语言中在存储一个数据之前,都需要在内存中给这个数据开辟一个固定的内存空间,并给 ...
- 还在手工制作APP规范文档?这款设计神器你不容错过
之前写了一些关于APP原型文档的文章:一款APP的交互文档从撰写到交付 这次想写下关于APP设计规范文档的内容,规范文档这个东西,实际上大部分中小型公司没有这方面的需求,也没精力去制作这样一个系统性的 ...
- python数据类型4
一浮点数 什么叫做浮点数:浮点数就相当于小数,但是浮点数不包括无限循环又不重复的小数. 小数分为 有限小数和无限小数 无限小数又分为 无限循环小数和无限不循环小数 而 浮点数就是有限小数和无限循环小数 ...
- 2018.06.29 NOIP模拟 Minimum(最小生成树)
Minimum 题目背景 SOURCE:NOIP2015-SHY-2 题目描述 给出一幅由 n 个点 m 条边构成的无向带权图. 其中有些点是黑点,另外点是白点. 现在每个白点都要与他距离最近的所有黑 ...
- 2018.06.29 洛谷P2890 [USACO07OPEN]便宜的回文(简单dp)
P2890 [USACO07OPEN]便宜的回文Cheapest Palindrome 时空限制 1000ms / 128MB 题目描述 Keeping track of all the cows c ...
- 2018.07.17 牛奶模式Milk Patterns(二分+hash)
传送门 一道简单的字符串.这里收集了几种经典做法: SAM,不想写. 后缀数组+二分,不想写 后缀数组+单调队列,不想写 hash+二分,for循哈希,天下无敌!于是妥妥的hash 代码如下: #in ...
- hdu-1058(动态规划)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1058 题意:求只由2,3,5,7的乘积组成的数,输出格式见output 思路:开始想打表,后来打表超时 ...
- flask_hello world
对于flask框架的学习全部借鉴于http://www.pythondoc.com/flask-mega-tutorial/index.html 在学习的过程中,我使用的是Pycharm IDE,Py ...
- js继承——扩展Object方式实现继承
function Parent(name,sex){ this.name = name; this.sex = sex; this.sayName = function(){ console.log( ...