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, ...
随机推荐
- 读取jar包资源(转)
可能有不少初学者会有这样的困惑:在你的代码里调用了一些资源文件,如图片,音乐等,在调试环境或单独运行的时候可以正常显示或播放,而一旦打包到jar文件中,这些东东就再也出不来了,除非把这个jar放到原来 ...
- VC++ list函数详解
在使用之前,需要完成两件事: (1) #include <list> (2) using namespace std; 声名变量: list<int> intlist ...
- C语言 malloc、calloc、realloc的区别
三个函数的申明分别是: void* malloc(unsigned size); void* realloc(void* ptr, unsigned newsize); void* calloc(si ...
- Android-ConvenientBanner轻松实现广告头效果
Android-ConvenientBanner通用的广告栏控件,让你轻松实现广告头效果.支持无限循环, 可以设置自动翻页和时间(而且非常智能,手指触碰则暂停翻页,离开自动开始翻页. 你也可以设置在界 ...
- 利用js对象的特性,去掉数组中的重复项
- Mahout源码分析之 -- QR矩阵分解
一.算法原理 请参考我在大学时写的<QR方法求矩阵全部特征值>,其包含原理.实例及C语言实现:http://www.docin.com/p-114587383.html 二.源码分析 这里 ...
- linux 实用知识整理
http://www.apelearn.com/study_v2/ 查看端口占用 netstat -apn
- jquery动态创建页面元素
jquery用$()方法动态创建一个页面元素,例如: var $div=$("<div title='动态创建页面元素'>欢迎创建一个新的div</div>" ...
- C语言课设心得分享(一)
今儿上完课设,老师果然讲的比较少,周四还不用去,看来还是学生自己折腾.我在做课设的过程中,攒了一些心得/体会,希望能和大家分享分享,也希望能一起探讨探讨.如果是我能回答的问题,我很乐意能够提供帮助. ...
- gdb调式
1.PCB版的相应目录下执行命令: gdbserver 10.18.13.84:5555 DvdPlayer 2.linux操作系统执行:(如果是android找到android项目路径下的gdb)m ...