mvc项目问题清单以及解决方法
项目开发中遇到的一些问题以及解决方法.
1. 脚本相关
mvc中RemoteAttribute使用,在IE浏览器下面会将结果缓存起来(304).因为IE浏览器判断Url的链接参数都没有变化,所以直接返回上一次的结果(304结果),但是其实我是需要重新再验证.
解决方式:直接在jquery.validate.unobtrusive.js的remote方法中加上时间戳即可.
var remoteUrl = options.params.url;
var remoteUrlAppendTime = remoteUrl + (remoteUrl.indexOf('?') > -1 ? "&" : "?") + new Date().getTime();jquery validate 在IE10 下出现 js错误(成员找不到)的修正
解决方式:
this.attr('novalidate', 'novalidate');
//====>修改为下面即可
if (typeof (Worker) !== "undefined") { this.attr('novalidate', 'novalidate'); }jquery调用webapi的参数仅仅只有一个数组(array).web api是如下定义public Result TestArray(string[] testArr);
解决方式:
将该数组直接弄成对一个参数名为空的对象.如下代码所示:
var arr=[1,2];var obj={"":arr};$.ajax({data:obj...});2.样式相关
笔者需要处理一些响应式布局,鉴于笔者对css 比较小菜鸟.在使用@media screen and (max-width:450px)进行对移动端进行兼容.但是考虑到IE8下不能使用media进行query
解决方式:
下载css3-mediaqueries.js脚本放置到
3.Web Api端
web api生成文档,笔者这边使用web api help直接生成的文档.然而,针对分层的解决方案,在api help页面上不显示其注释的内容.
解决方法:
①在.Areas.HelpPage.HelpPageConfig指向一个xml改变成指向指定的文件夹
config.SetDocumentationProvider(new XmlDocumentationProvider( HttpContext.Current.Server.MapPath("~/App_Data")));
② 在XmlDocumentationProvider构造函数中,通过文件夹获取文件夹下的注释xml;删除_documentNavigator变量,并添加private List _documentNavigators = new List();
public XmlDocumentationProvider(string appDataPath)
{
if (appDataPath == null)
{
throw new ArgumentNullException("appDataPath");
}
var files = Directory.GetFiles(documentPath, "*.xml");
foreach (var file in files)
{
XPathDocument xpath = new XPathDocument(Path.Combine(appDataPath, file));
_documentNavigators.Add(xpath.CreateNavigator());
}
}
③ 增加xml选择器的代码
private XPathNavigator SelectSingleNode(string selectExpression)
{
foreach (var navigator in _documentNavigators)
{
var propertyNode = navigator.SelectSingleNode(selectExpression);
if (propertyNode != null) return propertyNode;
}
return null;
}
④ 将_documentNavigator.SelectSingleNode调用修改为第三步的方法名.至于将各个分层注释生成到指定文件夹,可以自己配置.4.部署相关(主要是发布时一些小优化)
对于IIS无法加载js与css的问题
解决方法:在控制面板上打开或关闭window功能中的Internet信息服务里的万维网服务=>常见HTTP功能=>静态内容,安装之就可以完成
启动浏览器本地缓存
操作:IIS管理器中指定的网站上,Http响应标头==>常用标头==>勾取使web过期之后7天;在mvc的web.config 的
iis启动gzip压缩
操作:iis管理器指定网站的"压缩"==>勾取启动静/动态内容压缩,有利于加快访问传输数据
在线测试网页的访问速度,笔者这边使用卡卡网网站进行检测,该网站会提出一些优化建议,各位看官不知道还有没有好用??
5.写在最后
- 网页的访问速度更很多方面挂钩,不仅仅部署的时候注意.其实更多的是数据库操作以及一些必要的缓存策略.
- 对于数据库方面更多就是更多的注意批量操作的以及跨表查询.现在ORM框架都比较成熟,如EF,NH等,查询方面需要明白IQueryable与IEnumerable区别?是使用懒惰加载还是贪懒加载?批量插入是一条条插入还是直接批量直接插入?等等方面多考虑
- 缓存笔者这边更多就使用原生的HttpRuntime.Cache进行缓存一些经常用到的配置信息等等.
代码的可读性/稳定性,都需要留心注意.因为当别人坑你的时候你不爽,就应该想到自己不要留坑给别人
希望能给你一点点帮助!
一些参考
http://stackoverflow.com/questions/21895257/how-can-xml-documentation-for-web-api-include-documentation-from-beyond-the-main
http://www.iis.net/configreference/system.webserver/staticcontent/clientcache
http://kwilson.me.uk/blog/post-an-array-of-objects-to-webapi-using-jquery/
http://jingyan.baidu.com/article/597035521b96e88fc00740af.html
http://www.cnblogs.com/alicePanZ/p/4789687.html
mvc项目问题清单以及解决方法的更多相关文章
- asp.net MVC webservice 报次错解决方法
asp.net MVC webservice 报次错解决方法: 解决方法: 在 RouteConfig.cs public static void RegisterRoutes(RouteCol ...
- Eclipse项目红色叹号解决方法
情况:就是项目出现红色感叹号 解决方法: 对准项目右键选择Build Path → configure build path 点击eclipse项目的configure build path后,在弹出 ...
- MVC Ajax.BeginForm重复提交解决方法
mvc使用MVC Ajax.BeginForm提交的时候有重复提交结果的时候检查相关js文件引用情况, 其中mvc4注意 1 2 3 4 @Scripts.Render("~/bundles ...
- 工控随笔_06_西门子_Step7归档项目无法备份的解决方法
在一次备份Step7项目时,突然发现无法进行备份而是报错,具体的报错内容如下所示: 图 step7 归档程序时报pkzipc.exe 应用程序错误 内存不能为"read" 一.s ...
- Idea导出jar包运行报错:找不到主清单属性解决方法
解决方法 1.打开项目结构 2.创建一个Artifact 3.设置 我这里使用的maven,所以有resources文件夹 4.创建lib文件夹 右键output diretory,选择创建文件夹,名 ...
- 目录已存在导致Jenkins项目构建失败的解决方法
Jenkins中的项目在下载源代码时,如果Working Directory中存在未加入版本控制的文件或者目录已经存在于SVN库中,会导致更新失败,整个构建终止,解决方法是将SVN的检出策略由&quo ...
- ASIHTTPRequest开源类项目导入问题及解决方法
在静态库project中加入ASIHTTPRequest导出lib.a.放到project里编译出一下错: Undefined symbols for architecture armv7: &quo ...
- VS编译duilib项目时候的错误解决方法整理(转载)
转载自:http://blog.csdn.net/x356982611/article/details/30217473 @1:找不到Riched20.lib 用everything等软件搜索下磁盘, ...
- Android项目无法运行的解决方法
文件本身是否有问题 有两种方法可以判断:1.比较快捷的办法就是用解压软件打开或者解压的过程中有没有弹出什么错误提示,如果有错误提示那就重新下载一遍文件(javaapk用的压缩工具是winrar4.0, ...
随机推荐
- Linux shell之sed
sed编辑器逐行处理输入,然后把结果发送到屏幕. -i选项:直接作用源文件,源文件将被修改. sed命令和选项: a\ 在当前行后添加一行或多行 c\ 用新文本替换当前行中的文本 d 删除行 i\ 在 ...
- 循序渐进Python3(三) -- 2 -- 内置函数
上一篇我们介绍了21个最常用到的函数,简单列一下,帮助回忆巩固: 1.abs 2.dict 3.float 4.help 5.input 6.int 7.len 8.list 9.max 10.min ...
- linux关闭防火墙
查看防火墙状态: sudo service iptables status linux关闭防火墙命令: sudo service iptables stop linux启动防火墙命令: sudo se ...
- 梳理一下JS的基本语法
web三层结构来说 结构层:HTML 从语义角度,描述页面结构 样式层:CSS 从审美的角度,美化页面 行为层:JavaScript 从交互的角度,提升用户体验 ...
- ubuntu下非本账户的.profile文件的修改
今天不小心在账户了修改了自己的.profile文件,导致重启之后账户无法进入,点登陆账户后黑屏后就重新回到账户登陆界面.一番折腾之后终于成功修改了原账户中的.profile文件,成功从新进入了原账户. ...
- IE9 不F12打开控制台,代码不执行。打开后正常
对每个前端er来说,提起来ie就是头大,各种兼容性的问题,让人头大.前两天就在ie9下遇到一个比较少见的问题. 具体情况是这样的: ie9下,js不执行,各种绑定事件不起作用.其他浏览器都6得飞起.当 ...
- Restful风格API接口开发springMVC篇
Restful风格的API是一种软件架构风格,设计风格而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机 ...
- horizon 修改local的logging 配置
再部署完horizon的开发环境后,首先要做的就是修改下logging的输出. 我用的开发软件是pycharm, 所以,为了方便在 console里看到输出.需要在 /home/geiao/repo/ ...
- 思维导图软件TheBrain 8全新发布 提供更强大的信息管理
TheBrain思维导图软件是全球唯一一款动态的网状结构的思维导图软件,广泛用于学习.演讲.项目管理.会议.需求调研与分析等.其独特的信息组织方式使得用户可以创建并连接到数以万计的数字想法,为此在全球 ...
- 关闭 selinux 和防火墙
1.关闭 selinux 修改 它的配置文档 /etc/selinux/conf 修改 SELINUX=disabled 或者permissive 2. 关闭 防火墙 输入命令 systemctl d ...