zoukankan      html  css  js  c++  java
  • 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-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 的
    <system.webServer>



    </system.webServer>

    • 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

  • 相关阅读:
    CQUOJ 10819 MUH and House of Cards
    CQUOJ 9920 Ladder
    CQUOJ 9906 Little Girl and Maximum XOR
    CQUOJ 10672 Kolya and Tandem Repeat
    CQUOJ 9711 Primes on Interval
    指针试水
    Another test
    Test
    二分图匹配的重要概念以及匈牙利算法
    二分图最大匹配
  • 原文地址:https://www.cnblogs.com/luge/p/mvc_problem_list.html
Copyright © 2011-2022 走看看