Heim > Web-Frontend > HTML-Tutorial > http://www.codesnippet.info/ 建站技术备忘录_html/css_WEB-ITnose

http://www.codesnippet.info/ 建站技术备忘录_html/css_WEB-ITnose

WBOY
Freigeben: 2016-06-21 08:49:03
Original
1477 Leute haben es durchsucht

网站开发中技术问题的笔记

Javascript

BUG思考

  • 200 OK真的表示没有问题吗?有时候Status 200作为WebAPI的返回值,并不表示真的OK,例如取得一个文件,没有取到,但是返回值也会是200。200只是表示一个WebAPI执行完毕,没有异常而已,并不表示肯定成功。

  • IIS7.0 上传文件失败,返回404。乍一看是资源无法找到,其实是设定问题,上传文件的最大长度限制,还需要下面这样的配置。maxRequestLength很多文章都提到了,maxAllowedContentLength则很多文章没有提到。

  <configuration>    <system.web>      <compilation debug="true" targetFramework="4.5" />      <!--maxRequestLength就是文件的最大字符数,最大值不能超过2个G左右,executionTimeout是超时时间-->      <httpRuntime targetFramework="4.5" maxRequestLength="1073741824" executionTimeout="3600" />    </system.web>    <system.webServer>      <security>        <requestFiltering>         <!--修改服务器允许最大长度-->         <requestLimits maxAllowedContentLength="1073741824"/>       </requestFiltering>     </security>   </system.webServer> </configuration>
Nach dem Login kopieren
  • encodeurl 不能转 ‘&’ 符号使用Replace 将 ‘&’ 符号转成 ‘%26’。

关于QQ OAuth

关于审核的问题,

  • 一定要在基础信息的协作者账号中追加 359884458

  • 登陆后的页面上,一定要明显表示出登陆者的名称呢个

以下经验基于 MVC 5.2.3

ReSharp之后的问题

使用了ReSharp的移除没有使用(Remove Unused Reference)的引用之后,Package项目配置文件中的一些Item会被删除掉,在项目发布的时候一些动态链接库不会被发布到BIN目录下面,导致以下这样的问题

未能加载文件或程序集“Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”或它的某一个依赖项。系统找不到指定的文件。
Nach dem Login kopieren

所以一般建议在使用ReSharp之前将项目进行CheckIn,如果出现特殊情况则执行Redo即可。(具体配置文件:packages.config)

<?xml version="1.0" encoding="utf-8"?><packages>  <package id="Antlr" version="3.5.0.2" targetFramework="net451" />  <package id="bootstrap" version="3.3.6" targetFramework="net451" />  <package id="CommonMark.NET" version="0.11.0" targetFramework="net451" />  <package id="Elasticsearch.Net" version="2.1.1" targetFramework="net451" />  <package id="jQuery" version="2.2.2" targetFramework="net451" />  <package id="jQuery.Validation" version="1.15.0" targetFramework="net451" />  <package id="Microsoft.AspNet.Mvc" version="5.2.3" targetFramework="net461" />  <package id="Microsoft.AspNet.Razor" version="3.2.3" targetFramework="net461" />  <package id="Microsoft.AspNet.Web.Optimization" version="1.1.3" targetFramework="net461" />  <package id="Microsoft.AspNet.WebApi" version="5.2.3" targetFramework="net451" />  <package id="Microsoft.AspNet.WebApi.Client" version="5.2.3" targetFramework="net451" />  <package id="Microsoft.AspNet.WebApi.Core" version="5.2.3" targetFramework="net451" />  <package id="Microsoft.AspNet.WebApi.WebHost" version="5.2.3" targetFramework="net451" />  <package id="Microsoft.AspNet.WebPages" version="3.2.3" targetFramework="net461" />  <package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="1.0.1" targetFramework="net451" />  <package id="Microsoft.jQuery.Unobtrusive.Validation" version="3.2.3" targetFramework="net461" />  <package id="Microsoft.Net.Compilers" version="2.0.0-beta1" targetFramework="net451" developmentDependency="true" />  <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net461" />  <package id="Modernizr" version="2.8.3" targetFramework="net451" />  <package id="Newtonsoft.Json" version="8.0.3" targetFramework="net451" />  <package id="NPOI" version="2.1.3.1" targetFramework="net451" />  <package id="Respond" version="1.4.2" targetFramework="net451" />  <package id="ThoughtWorks.QRCode" version="1.1.0" targetFramework="net451" />  <package id="WebGrease" version="1.6.0" targetFramework="net451" /></packages>
Nach dem Login kopieren

HttpRequestValidationException:

由于安全上的原因,Asp.net中QueryString等不允许出现<> 这样的字符如果你确认的确需要跳过安全验证,里面最简单的解决方法是使用Unvalidated版本

string strArticalID = context.Request.Unvalidated.Form["ArticalID"];
Nach dem Login kopieren

Debug版本的时候,VS无法察看很多变量的值,例如Ajax调用ASHX

如果出现多个控制器的时候,可能是因为你的BIN目录没有删除干净,有一个过期的,以前版本的DLL导致的

Asp.net MVC在运行的时候,会将所有Bin下面的DLL进行解析,如果有一个旧的DLL,例如是改名前的DLL残留在Bin目录中,则会出现多个同名控制器的问题。(在VS中怎么检查都不会发现这个问题的!)

如何设定启动Areas?

参见RouteConfig的编写,这里可以指定默认的Area,写法必须严格按照例子.Home_Default这个路由名字不要使用(可能系统会默认注册这个名字)(错误信息:路由集合中已存在名为“Home_default”的路由。路由名称必须唯一。)

View的Layout

如果不指定Layout,默认使用 Views/Shared/_Layout(_ViewStart.cshtml)

类似于React的组件,可以使用DisplayFor来显示组件

组件放在Shared/DisplayTemplate/ 下面

px 不能省略,RenderBody() 需要CSS3规范的Style

加上去的话,类名称必须区分大小写,写错则不能识别

这是个浏览器兼容性的话题。有时候你会发现HTML的Class名称大小写写错了,样式也会生效,这是因为你没有加上 DOCTYPE 这个TAG。如果加上之后,则类名称不允许忽略大小写。

Area名称不要使用实体名称,或者其它类的名称,不然需要名字空间前缀

修改Area名称后注意各处名字空间的统一

每个Area的webConfig里面,可以添加默认名字空间

<system.web.webPages.razor>    <pages pageBaseType="System.Web.Mvc.WebViewPage">        <namespaces>            <add namespace="System.Web.Mvc" />
Nach dem Login kopieren

GET方法如果有参数,则如果需要对应可空的情况,可以使用参数默认值

public ActionResult Index(int PageNo = 1)
Nach dem Login kopieren

*如果同时存在 没有参数和带参数的,会报错。可选参数倒没有问题。。。

Controller里面设置过 ViewBag.XXXX,如果在之前使用过Model.XXXX,则ViewBag.XXXX变为Model.XXXX

$ajax的变体

可以使用 $.post来简化Post操作

ASHX里面如何使用Session

添加 IRequiresSessionState 接口即可

    public class PublishPost : IHttpHandler, IRequiresSessionState
Nach dem Login kopieren

如何用 Href 实现Post

注意 forms的下标注意 POST方法必须写明

<div class="SingleBox">    <a href="/Admin/Accept?ArticalID=@Model.ArticalInfo.Sn" class="btn btn-sm btn-success" onclick="return OpenModal(this.href, '确认接受', '确认接受该条记录?')">        <span class="glyphicon glyphicon-remove"> 接受 </span>    </a>    <br /><br />    <form action="/Admin/Reject" method="post">        <a href="javascript:document.forms[2].submit();" class="btn btn-sm btn-danger" onclick="return OpenModal(this.href, '确认拒绝', '确认拒绝该条记录?')">            <span class="glyphicon glyphicon-remove"> 拒绝 </span>        </a>        审核留言:        <input type="text" name="message" style="width:400px" />        <input type="hidden" name="ArticalID" value="@Model.ArticalInfo.Sn" />    </form></div>
Nach dem Login kopieren

Javascript操作DOM的Style,属性是直接使用的,不是“xxx:xxx”

document.getElementById("ReplySubmit_" + PreViewReplyId).style.display = "none";
Nach dem Login kopieren

Bootstrap的btn-primary 可能有Submit的功能!!!

Bootstrap的btn-primary 可能有Submit的功能(待验证)

使用过的FileStream可能被清空,注意位置和长度

许多对于Stream的操作都会导致流的位置到EOS,或者整个流的被使用完了(无法复用?)

MvcHtmlString 命令页面生成器不要再次转换字符串了,不然的话,空格等特殊字符将被模板系统自动转换

Jquery Wrap,可以给元素增加父元素。。。。。强大啊。。。

   $(document).ready(function () {        $(".PostBody img").wrap(            function () {                var filepath = this.src;                var imagefilename = filepath.substring(_urlstr.length + "/FileSystem/Thumbnail?filename=".length)                @{                    string Image = ConfigurationManager.AppSettings["Image"];                    string jsCode = string.Empty;                    if (Image == "QiNiu")                    {                        jsCode = "filepath = '" + @ConfigurationManager.AppSettings["URLBASE"]  + "' + imagefilename;";                    }else                    {                        jsCode = "filepath = '/FileSystem/Image?filename=' + imagefilename;";                    }                }                @MvcHtmlString.Create(jsCode)                //原图是外部连接的处理                if (this.src.indexOf("/FileSystem/Thumbnail") == -1){                    if (this.src.indexOf("@ConfigurationManager.AppSettings["URLBASE"]") == -1){                        filepath = this.src;                    }                }                return "<div class='imgArea'><a href='" + filepath + "'></a></div>"            }        );
Nach dem Login kopieren

C# && Mongo

可以使用转换规则将DateTime变成Local,不用特性

使用特性:

        /// <summary>        ///     创建时间        /// </summary>        [BsonDateTimeOptions(Kind = DateTimeKind.Local)] public DateTime CreateDateTime;
Nach dem Login kopieren

使用转换规则

   BsonSerializer.RegisterSerializer(typeof(DateTime), new DateTimeSerializer(DateTimeKind.Local));
Nach dem Login kopieren

可以使用IgnoreIfNullConvention,则空数据不序列化,

也可以IgnoreExtraElementsConvention忽略数据中有,但是数据模型中没有的字段。例如数据模型改名之后,数据库里面的残留字段。

                pack.Add(new IgnoreExtraElementsConvention(true));                pack.Add(new IgnoreIfNullConvention(true));
Nach dem Login kopieren

属性和静态变量的区别

属性,公共变量 序列化 静态变量,const 不序列化

可以尝试类的嵌套,可以正常序列化

快速JSON

using Newtonsoft.Json;var result = new{    success = 1,    message = "提示的信息,上传成功或上传失败及错误信息等。",    url = filename};string json = JsonConvert.SerializeObject(result);context.Response.Write(json);
Nach dem Login kopieren

HttpPostedFileWrapper

new HttpPostedFileWrapper(file) as HttpPostedFileBase
Nach dem Login kopieren

使用动态对象快速反序列

dynamic obj = JsonConvert.DeserializeObject(sr.ReadToEnd());
Nach dem Login kopieren

图片放大方案

<script type="text/javascript" src="http://tsi.github.io/jQuery.imgBox/imgBox/jquery.imgbox.js"></script><link rel="stylesheet" href="http://tsi.github.io/jQuery.imgBox/imgBox/imgbox.css" /><script>    $(document).ready(function () {        $(".PostBody img").wrap(            function(){                return "<div class='imgArea'><a href='" + this.src + "'></a></div>"            }        );        $(".PostBody .imgArea a").imgbox({            slideshow: false        });    });</script>
Nach dem Login kopieren

MongoDB Query.EQ可以用来查找列表中是否有数据

IMongoQuery tagNameQuery = Query.EQ(nameof(TagName),tag);
Nach dem Login kopieren

Distinct对于数组的处理,是拆开数组项目,进行Distinct!!!!使用In表示两个数组是否存在交集(因为In的相等,对于数组是拆开判断的)

Great Linq

Linq可以做很多强大的工作

x.GroupBy((article) => article.OwnerId).Select(group => new { ownerId = group.Key, Count = group.Count() });
Nach dem Login kopieren

Web(ASHX)服务改名:

修改名字的时候,需要同时修改View MarkUp的代码

ActionResult 可以通过来设置缓存时间

        /// <summary>        /// 缩略图(JPEG)        /// </summary>        /// <param name="filename"></param>        /// <returns></returns>        [OutputCache(Duration = int.MaxValue)]        public ActionResult Thumbnail(string filename)        {            var stream = new MemoryStream();            string Thumbnail = ConfigurationManager.AppSettings["Thumbnail"];            switch (Thumbnail)            {                case "Mongo":                    MongoStorage.GetFile(stream, filename, "Thumbnail");                    break;                case "FileSystem":                    stream = FileSystemStorage.GetFile(filename, "Thumbnail");                    break;                case "QiNue":                    //实际上这里直接使用QiNue的URL就可以了                    stream = QiniuStorage.GetFile(filename);                    break;            }            return File(stream.ToArray(), "image/jpeg");        }
Nach dem Login kopieren

BSonDocument 转 ClassObject

BsonSerializer.Deserialize<Article>(doc)
Nach dem Login kopieren

MongoDB暂时无法中文检索在Win平台,中文需要企业版的MongoDB

原因是系统不知道如何进行分词,可以使用第三方的分词组件

MarkDown Editor(Pandao)研究

http://pandao.github.io/editor.md/

Editor 的可配置项目

打开源代码可以看到所有的可配置项目

需要添加

    <script src="~/Content/editormd/editormd.min.js"></script>    <link rel="stylesheet" href="~/Content/editormd/css/editormd.css" />
Nach dem Login kopieren

font文件夹也必须,不然部分图标缺失

Convert MD To HTML

Install-Package CommonMark.NET

plugins

图片上传等功能需要使用这个Plugins文件夹里面的插件

autofocus:false

防止自动获得焦点,页面开始时候垂直位置不正确

对于错误的MD语法,该编辑器HTML预览的时候不会报错!!!

浏览器兼容性问题

Chromn 12px 字体变为 16px

由于缩放问题造成的,CSS里面12px,如果缩放之后,系统还是维持原来的字体大小,整个字体在渲染的时候进行放大处理

本文将和 http://www.codesnippet.info/Article/Index?ArticleId=00000004 实时同步

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage