上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 18 下一页
摘要: 更好地使用jQuery,这里总结了8个小技巧。 1、DOM遍历是昂贵的,将变量缓存起来。 //不推荐var h = $('#ele').height();$('#ele').css('height', h-20); //推荐var $ele = $('#ele');var h = $ele.height();$ele.css('height',h-20); 2、尽可能地合并函数。 ... 阅读全文
posted @ 2015-04-07 16:04 Darren Ji 阅读(802) 评论(0) 推荐(2) 编辑
摘要: 最近踢了场球,9人制比赛,上半场我们采用防守阵型效果不佳,下半场采用进攻阵型取得了比赛的主动。我们上下半场所采取的策略,似乎可以用"装饰器"模式实现一遍。 首先肯定是抽象基类。 public abstract class OurStrategy { public abstract void Play(string msg); } 通常,在上半场,我... 阅读全文
posted @ 2015-04-07 15:05 Darren Ji 阅读(489) 评论(0) 推荐(0) 编辑
摘要: 对集合排序,可能最先想到的是使用OrderBy方法。 class Program { static void Main(string[] args) { IEnumerable result = GetStudents().OrderBy(r => r.Score); foreach (var i... 阅读全文
posted @ 2015-04-07 08:27 Darren Ji 阅读(6127) 评论(6) 推荐(0) 编辑
摘要: 通常说泛型,比如List是类型安全的,为什么这么说呢? 先来看一个类型不安全的例子。 class Program { static void Main(string[] args) { var tempArr = new ArrayList(); tempArr.Add(1); ... 阅读全文
posted @ 2015-04-04 07:46 Darren Ji 阅读(1889) 评论(4) 推荐(0) 编辑
摘要: Dictionary是一个键值类型的集合。它有点像数组,但Dictionary的键可以是任何类型,内部使用Hash Table存储键和值。本篇自定义一个类型安全的泛型Dictionary,并且可以被序列化。 为了使自定义的泛型Dictionary可以被序列化成xml,需要实现泛型IXmlSerializable接口。 public class MySerializableDictiona... 阅读全文
posted @ 2015-04-04 07:26 Darren Ji 阅读(2280) 评论(0) 推荐(0) 编辑
摘要: 如果把商户网站使用第三方支付平台(比如支付宝)的原理搞清楚,那编程就变得简单多了。 整个过程大致这样: 1、商户与支付宝签约。2、在商户网站购买商品,填写数量,确定购买后跳转到结账页面。结账页面可能包括订单号、定单状态(已支付/未支付)、收货人信息、配送方式、定单金额、配送费用、总金额、支付方式、结账按钮,等等。3、当点击"结账"按钮,会重定向到支付宝付款页面。而在后台,实际上是把数据提交到支... 阅读全文
posted @ 2015-04-03 16:38 Darren Ji 阅读(5263) 评论(1) 推荐(3) 编辑
摘要: 如果网站使用html5、css3、自适应等新特性,可能有些浏览器版本不支持。这时候,需要提醒浏览者更新浏览器的版本到最新。 本篇用到的插件为:http://jreject.turnwheel.com/ HomeController中: public class HomeController : Controller { public ActionResult ... 阅读全文
posted @ 2015-04-02 09:16 Darren Ji 阅读(1831) 评论(1) 推荐(0) 编辑
摘要: IEnumerable, ICollection, IList,每种接口只适合某些特定场景,如何区别使用呢? IEnumerable接口,只提供了一个获取迭代器的方法,这也是为什么可以使用foreach遍历实现了IEnumerable接口集合的原因。 public interface IEnumerable { IEnumerator GetEnumerator(); } ICo... 阅读全文
posted @ 2015-04-02 06:40 Darren Ji 阅读(1279) 评论(1) 推荐(0) 编辑
摘要: 关于IEnumerable和IQueryable的区别,这事还要从泛型委托Func说起。来看一个简单的泛型委托例子: class Program { static void Main(string[] args) { Func f = i => i > 5; Console.WriteLine(f(3... 阅读全文
posted @ 2015-04-01 12:03 Darren Ji 阅读(1441) 评论(0) 推荐(2) 编辑
摘要: 我们常用IEnumerable,却忽视IEnumerator。简单来说,IEnumerable是可以被循环遍历的集合,IEnumerator实施循环遍历。 接口分别是:public interface IEnumerator { bool MoveNext(); object Current{get;} void Reset(); } public interface ... 阅读全文
posted @ 2015-04-01 07:28 Darren Ji 阅读(560) 评论(0) 推荐(0) 编辑
摘要: 本篇实践在ASP.NET MVC 4下使用Session来保持表单的状态。 本篇的源码在这里: https://github.com/darrenji/KeepFormStateUsingSession 如上,输入俱乐部名称,点击"添加球员",输入球员名称。我们希望,点击"到别的地方转转"跳转到另外一个视图页,当再次返回的时候能保持表单的状态。 点击"到别的地方转转"跳转到另外一个视... 阅读全文
posted @ 2015-03-30 23:27 Darren Ji 阅读(3695) 评论(0) 推荐(1) 编辑
摘要: 我们知道,在ASP.NET MVC中实现多选Select的话,使用Html.ListBoxFor或Html.ListBox方法就可以。在实际应用中,到底该如何设计View Model, 控制器如何接收多选Select的选中项呢? 实现效果如下: 初始状态某些选项被选中。 当按着ctrl键,进行重新选择多项,点击"提交"按钮,把选中项的id拼接。 对于Select中的项,包含显示值,V... 阅读全文
posted @ 2015-03-30 09:29 Darren Ji 阅读(3895) 评论(1) 推荐(1) 编辑
摘要: 在ASP.NET MVC的视图页向控制器传递异步数据,可能是数组,JavaScript对象,json,表单数据,等等。 关于数据,JavaScript对象有时候和json长得一模一样,有么有? var person = {Name: 'darren', Age: 21};以上是一个JavaScript对象。不过也可以这样表示: var person = {"Name":"darren"... 阅读全文
posted @ 2015-03-29 10:27 Darren Ji 阅读(1475) 评论(0) 推荐(2) 编辑
摘要: 本篇在ASP.NET MVC下实践使用Quartz.NET执行定时任务。 首先通过NuGet安装Quartz.NET。 使用Quartz.NET的大致思路是:1、实现IJob接口,定义具体要做的事情2、使用Quartz.NET的API定义定时任务规则3、在Application_Start注册定时任务 实现IJob接口。 public class MyJob : IJob ... 阅读全文
posted @ 2015-03-28 23:06 Darren Ji 阅读(3868) 评论(2) 推荐(1) 编辑
摘要: 使用委托来做一些事情,大致思路是: 1、定义声明一个委托,规定输入参数和输出类型。2、写几个符合委托定义的方法。3、把方法列表赋值给委托4、执行委托 internal delegate int MyDelegate(); class Program { static void Main(string[] args) { ... 阅读全文
posted @ 2015-03-28 11:48 Darren Ji 阅读(859) 评论(0) 推荐(1) 编辑
摘要: 在.NET4.0中,我可以借助System.Speech组件让电脑来识别我们的声音。 以上,当我说"name",显示"Darren",我说"age",显示"永远21"。如何做呢? 首先要开启电脑的语音识别功能。 右键电脑右下方的扬声器,选择"录音设备"。 点击默认的"麦克风",再点击左下角的"配置"按钮。 点击"启动语音识别"。 一系列简单设置后,屏幕上出现如下: 在VS中创建... 阅读全文
posted @ 2015-03-28 09:59 Darren Ji 阅读(11352) 评论(8) 推荐(3) 编辑
摘要: 对于时间日期,有时我们希望以更友好的方式展示,比如几秒钟前,几分钟前,几小时前...... 这其中:1、需要判断输入日期的格式是否正确2、使用TimeSpan计日期时间之间的间隔,然后可以转换成秒、分钟,等等3、最后转换成秒、分钟、小时、天等,以整型显示 class Program { static void Main(string[] args) ... 阅读全文
posted @ 2015-03-27 08:29 Darren Ji 阅读(1054) 评论(0) 推荐(1) 编辑
摘要: 遇到了这样的一个需求:通过勾选checkbox来更改select的内容。 在没有勾选checkbox之前是这样的: 在勾选checkbox之后是这样的: 想通过ajax异步来实现。所以,从控制器拿到的json数据,在控制器中应该先是Dictionary类型,然后再转换成json格式。 在没有勾选checkbox之前,select中内容对应的Model为: public c... 阅读全文
posted @ 2015-03-26 09:22 Darren Ji 阅读(1637) 评论(6) 推荐(0) 编辑
摘要: 本篇体验在ASP.NET MVC 4中使用Log4Net记录日志。 通过NuGet安装Log4Net。 需求是:当出错时导向到Error.html静态页面,Log4Net记录错误信息。 大致的思路是: 1、写一个记录日志的接口2、实现记录日志接口的类,用Log4Net的API实现3、在Web.config中配置Log4Net4、在Global.asax中注册Log4Net5、自定义一个出... 阅读全文
posted @ 2015-03-26 08:19 Darren Ji 阅读(1922) 评论(2) 推荐(1) 编辑
摘要: 在需要处理很多分类以及导航的时候,树形导航菜单就比较适合。例如在汽车之家上: 页面主要分两部分,左边是导航菜单,右边显示对应的内容。现在,我们就在ASP.NET MVC 4 下临摹一个,如下: 实现的效果包括:1、点击导航菜单上的品牌,左侧显示该品牌下的所有车型。2、点击导航菜单上的车系,左侧显示该车系下的所有车型。3、点击左侧上方的字母导航,锚点跳到导航菜单的对应部分。4、页面加载完... 阅读全文
posted @ 2015-03-25 09:45 Darren Ji 阅读(12297) 评论(0) 推荐(1) 编辑
摘要: 对于刚创建的元素,使用jQuery的each方法,有时候会不起作用。解决方案大致有2种: 1、刚创建完的时候,就使用each方法 $('#btn').on("click", function(){ $('#div').append(""); $("input").each(function(){ //TODO: }); }); 2、页面加载完毕... 阅读全文
posted @ 2015-03-25 08:11 Darren Ji 阅读(817) 评论(0) 推荐(0) 编辑
摘要: 当我们想把一个字符串转换成整型int的时候,我们可能会想到如下三种方式:int.Parse,Convert.ToInt32和int.TryParse。到底使用哪种方式呢? 先来考虑string的可能性,大致有三种可能:1、为null2、不是整型,比如是字符串3、超出整型的范围 基于string的三种可能性,分别尝试。 □ 使用int.Parse string str = null; ... 阅读全文
posted @ 2015-03-23 09:31 Darren Ji 阅读(2210) 评论(3) 推荐(1) 编辑
摘要: 在C#中,在处理字符串拼接的时候,使用StringBuilder的效率会比硬拼接字符串高很多。到底有多高,如下: static void Main(string[] args) { string str1 = string.Empty; Stopwatch sw1 = new Stopwatch(); ... 阅读全文
posted @ 2015-03-23 08:52 Darren Ji 阅读(1909) 评论(0) 推荐(1) 编辑
摘要: →新建一个项目→选择"其他语言","Visual C++",并选择"win32控制台应用程序",并给控制台应用程序起名。→点击"下一步"→点击"完成"→编写如下#include "stdafx.h" int _tmain(int argc, _TCHAR* argv[]) { printf("Hello C\n"); getchar(); return 0; } →点击"... 阅读全文
posted @ 2015-03-21 20:39 Darren Ji 阅读(1710) 评论(0) 推荐(0) 编辑
摘要: 缓存很多条数据,但只读取其中的一部分数据,如何处理? 比如在缓存中保存了100条数据,但读取分页数据,比如每次分页只读取10条数据。这种情况下,可以把这100条数据拆分成10次分别保存起来。每一个缓存项的key需要特别的设计,比如:01-10-products, 02-10-products...... 如何避免缓存一些不需要的数据? 比如:public class Teacher {... 阅读全文
posted @ 2015-03-11 21:31 Darren Ji 阅读(351) 评论(0) 推荐(0) 编辑
摘要: 如果按存储的地方来分类,缓存分为哪些? 分为本地缓存和分布式缓存。本地缓存就是把数据保存应用程序所在的那台机器的内存中;而分布式缓存是把数据放在缓存服务器中,这个缓存服务器有可能是和应用服务器在同一台机器,这时候的是跨进程访问,如果缓存服务器和应用程序服务器不在同一台机器,这时候就可能会设计到跨域跨进程访问了。 缓存通过何种方式来找到缓存中的数据? 表面上是通过键来找到对象,实际是通过... 阅读全文
posted @ 2015-03-11 17:44 Darren Ji 阅读(452) 评论(0) 推荐(0) 编辑
摘要: 当涉及到跨进程甚至是跨域传输数据的时候,我们需要把对象序列化和反序列化。 首先可以使用Serializable特性。 [Serializable] public class Person { public string _firstName; public string _secondName; //序列化 ... 阅读全文
posted @ 2015-03-08 23:40 Darren Ji 阅读(2038) 评论(0) 推荐(3) 编辑
摘要: 在ASP.NET MVC项目中遇到了这样的一个问题,假设父页面有一个iframe 通过父页面上的一个按钮触发该iframe的src属性指向一个url: var url = "/somecontrollername/someactionname"; $("#sth").attr("src", url); 通过someactionname这个action渲染的视图,称为子页面吧。... 阅读全文
posted @ 2015-03-01 00:32 Darren Ji 阅读(3187) 评论(0) 推荐(0) 编辑
摘要: 本篇接着上一篇"ASP.NET Web API实践系列06, 在ASP.NET MVC 4 基础上增加使用ASP.NET WEB API",尝试获取数据。 在Models文件夹下创建Comment类: namespace MvcApplication5.Models { public class Comment { public int ID { get; ... 阅读全文
posted @ 2015-02-11 13:18 Darren Ji 阅读(960) 评论(0) 推荐(0) 编辑
摘要: 本篇尝试在现有的ASP.NET MVC 4 项目上增加使用ASP.NET Web API。 新建项目,选择"ASP.NET MVC 4 Web应用程序"。 选择"基本"项目模版。 在Controllers文件夹下添加一个名称为"TestController"的空API控制器。 在引用文件夹中多了以下程序集:System.Web.HttpSystem.Web.Http.WebHostS... 阅读全文
posted @ 2015-02-11 10:43 Darren Ji 阅读(827) 评论(0) 推荐(0) 编辑
摘要: 本篇使用EF Code First搭建一个简易ASP.NET MVC 4网站,并允许数据库迁移。 创建一个ASP.NET MVC 4 网站。 在Models文件夹内创建Person类。 public class Person { public int ID { get; set; } public string FirstName { ge... 阅读全文
posted @ 2015-02-10 18:04 Darren Ji 阅读(1432) 评论(0) 推荐(1) 编辑
摘要: 本篇用来梳理对象的创建、垃圾的回收,以及非托管资源的手动处理。 →首先运行应用程序,创建一个Windows进程。 →CLR创建一块连续的虚拟地址空间,这个地址空间就是托管堆。而且,这个地址空间最初并没有对应的物理存储空间。 虚拟地址空间分成2段。一个区段是普通堆,也叫GC堆,大小小于85000字节的引用类型对象的实例被分配在这里;另一个是大对象堆,大小大于等于85000字节的引用类型对象的... 阅读全文
posted @ 2015-02-09 23:09 Darren Ji 阅读(989) 评论(0) 推荐(0) 编辑
摘要: 本篇是针对我在做项目过程中遇到的特定需求而做的一个Demo, 没有很大的通用性,读者酌情可绕行。 标题不能完全表达本意,确切的情景需要展开说。假设有三级分类,关于分类这样设计: public class Category { public int Id { get; set; } public string Name { get; set; }... 阅读全文
posted @ 2015-02-02 15:35 Darren Ji 阅读(930) 评论(1) 推荐(1) 编辑
摘要: 通常,我们看到的购物车是这样的: 虽然这种购物车显示方式被广泛运用,但我个人觉得不够直观。如果换成这样呢? 本篇的源码放在了:https://github.com/darrenji/ShoppingCartInMVC 以上购物车页能实现的效果包括:1、购物车明细:显示订购数量、总金额,清空购物车。2、购物车内产品:数量可调整,对应的小计和总计动态变化。点击移除按钮移除该产品... 阅读全文
posted @ 2015-01-29 16:14 Darren Ji 阅读(6920) 评论(6) 推荐(4) 编辑
摘要: 在日常工作中,我们时常需要向同事、朋友、甚至投资人介绍自己的项目,不一样的介绍方式会导致不同的效果。而介绍的难点在于: 1、如何引起别人的兴趣?2、听者的背景迥异,他们大都没有你的行业背景,介绍得越多,听者的疑问可能越多,如何避免?3、由于自己在项目上的投入,对项目有某种情结,如何避免夸大其辞,而保持客观? 通常,我们会以"陈述"的方式介绍: 我们在做一件事......提供......产品、服... 阅读全文
posted @ 2015-01-27 23:36 Darren Ji 阅读(1076) 评论(0) 推荐(1) 编辑
摘要: 序列化是将对象转换成字节流的过程,反序列化是把字节流转换成对象的过程。对象一旦被序列化,就可以把对象状态保存到硬盘的某个位置,甚至还可以通过网络发送给另外一台机器上运行的进程。本篇主要包括: ● 使用BinaryFormatter类进行序列化和反序列化● 使用ISerializable接口自定义序列化过程● 使用XmlSerializer类进行序列化和反序列化 □ 使用BinaryForm... 阅读全文
posted @ 2015-01-26 23:05 Darren Ji 阅读(895) 评论(0) 推荐(0) 编辑
摘要: 在ASP.NET MVC中,在链接中附加路由数据有2种方式。一种是把路由数据放在匿名对象中传递: 走你 一种是放在RouteValueDictionary对象中传递: 也走你 如果在控制器中,通过类似this.ControllerContext.RouteData.Values["somekey"].ToString()方式来获取路由数据是行不通的,因为Url.Action方法所带... 阅读全文
posted @ 2015-01-25 21:06 Darren Ji 阅读(1973) 评论(0) 推荐(0) 编辑
摘要: 在ASP.NET MVC中,可以使用RegularExpression特性来验证手机号码。 public class Customer { [Required(ErrorMessage = "必填")] [Display(Name = "手机号")] [RegularExpression(@"^1[3458][0-9]{9}$", ... 阅读全文
posted @ 2015-01-25 11:51 Darren Ji 阅读(5715) 评论(1) 推荐(1) 编辑
摘要: 有这样的一个需求:提交表单,如果用户没有登录,就跳转到登录页,登录后,跳转到原先表单提交这个页面,而且需要保持提交表单界面的数据。 提交表单的页面是一个强类型视图页,如果不考虑需要保持提交表单界面的数据,可以先设计这样的一个Model: public class Student { public string Name{get;set;} public string Retu... 阅读全文
posted @ 2015-01-25 00:22 Darren Ji 阅读(2035) 评论(2) 推荐(0) 编辑
摘要: 在很多电商网站中,在购物车所在页面,涉及到商品数量的时候,都会提供一个+号按钮和-号按钮来实现增1和减1,并且只允许input中输入数值。Bootstrap TouchSpin这款插件就是针对此需求而写。 首先引入必要的css和js文件。 □ 控制数值的精度和自增自减量 ... 阅读全文
posted @ 2015-01-23 23:47 Darren Ji 阅读(2590) 评论(0) 推荐(0) 编辑
上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 18 下一页

我的公众号:新语新世界,欢迎关注。