上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 18 下一页
摘要: 在上一篇"在ASP.NET MVC4中实现同页面增删改查,无弹出框01,Repository的搭建"中,已经搭建好了Repository层,本篇就剩下增删改查的界面了......今天的阳光真特么好,写完本篇,好出去在阳光下溜溜狗、散散步什么的,正所谓文武之道一张一弛,走神了,进入正题。 首先是一个View Model,在这里定义验证规则,提交和保存数据的时候还必须和领域模型映射。using S... 阅读全文
posted @ 2014-11-06 13:03 Darren Ji 阅读(3317) 评论(1) 推荐(0) 编辑
摘要: 通常,在同一个页面上实现增删改查,会通过弹出框实现异步的添加和修改,这很好。但有些时候,是不希望在页面上弹出框的,我们可能会想到Knockoutjs,它能以MVVM模式实现同一个页面上的增删改查,再辅以knockout.validation.js,还可以对Model进行验证。但knockout.validation.js与ASP.NET MVC本身的验证没有做到无缝对接,不能形成一个从客户端到服务... 阅读全文
posted @ 2014-11-06 10:56 Darren Ji 阅读(4457) 评论(1) 推荐(0) 编辑
摘要: 当在ASP.NET MVC中,针对一个Model进行添加操作的时候,报如下错误: [InvalidOperationException: 非介入式客户端验证规则中的验证类型名称必须唯一。下列验证类型出现重复: range] 原因是第三方验证程序集和MVC固有验证发生名称的冲突。 解决办法:在Model中属性上注释掉第三方程序集提供的验证特性。 阅读全文
posted @ 2014-11-05 23:46 Darren Ji 阅读(1520) 评论(1) 推荐(0) 编辑
摘要: 在使用EF更新数据的时候,报如下错:ObjectStateManager 中已存在具有同一键的对象。ObjectStateManager 无法跟踪具有相同键的多个对象。 原因是:在EF上上下文中不允许存在2个具有相同键的实体。Update部分修改如下: public Product Update(Product item) { try ... 阅读全文
posted @ 2014-11-04 23:48 Darren Ji 阅读(3482) 评论(0) 推荐(0) 编辑
摘要: Knockout真正强大之处在于绑定机制,通过data-bind属性值体现绑定,不仅可以绑定值,还可以绑定事件,甚至可以自定义绑定。 从一个例子看Knockou的绑定机制 假设想给一个button元素变成jQuery UI的button,大致这样做:点我 $('#btn').button( icons: { primary: 'ui-icon-gear' } ); "他山之石,可以攻... 阅读全文
posted @ 2014-11-04 10:26 Darren Ji 阅读(1436) 评论(0) 推荐(1) 编辑
摘要: 本篇体验使用 foreach 绑定一个Product集合。 首先使用构造创建一个View Model。 var Product = function(data) { this.name = ko.observable(data.name); this.category = ko.observable(data.category); ... 阅读全文
posted @ 2014-11-03 10:58 Darren Ji 阅读(1212) 评论(2) 推荐(0) 编辑
摘要: 在前两篇中,体验了Knockout的基本验证和自定义验证。本篇自定义验证信息的显示位置与内容。 自定义验证信息的显示位置 通常,Knockout的验证信息紧跟在input后面,通过validationMessage属性可以自定义验证信息的显示位置。@{ ViewBag.Title = "Index"; Layout = "~/Views/Shared/_Layout.cs... 阅读全文
posted @ 2014-11-03 09:53 Darren Ji 阅读(784) 评论(0) 推荐(1) 编辑
摘要: 在上一篇中体验了Knockout.Validation的基本验证,本篇体验自定义验证和异步验证。 自定义验证规则 ko.validation有一个rules属性,专门用来存放验证规则,它是一个键值对集合类型,key就是自定义验证规则的名称,value是一个json对象。@{ ViewBag.Title = "Index"; Layout = "~/Views/Shared... 阅读全文
posted @ 2014-11-02 13:21 Darren Ji 阅读(1205) 评论(0) 推荐(0) 编辑
摘要: 本篇体验View Model验证。Knockout的subscribe方法能为View Model成员注册验证规则。 @{ ViewBag.Title = "Index"; Layout = "~/Views/Shared/_Layout.cshtml"; } 最大长度为8! @section scripts { } 以上的做法稍显繁琐。其实,使用... 阅读全文
posted @ 2014-11-02 10:02 Darren Ji 阅读(1676) 评论(0) 推荐(0) 编辑
摘要: 通常,需要把View Model转换成json格式传给服务端。但在很多情况下,View Model既会包含字段,还会包含方法,我们只希望把字段相关的键值对传给服务端。 先把上一篇的Product转换成json格式,通过pre元素显示出来。 @section scripts { } 可是,我们只想把name,category键值对传给服务端,该如何做到呢? □ 方... 阅读全文
posted @ 2014-11-01 22:30 Darren Ji 阅读(843) 评论(0) 推荐(0) 编辑
摘要: 使用Knockout,当通过构造函数创建View Model的时候,构造函数的参数个数很可能是不确定的,于是就有了这样的一个解决方案:向构造函数传递一个object类型的参数data。 @section scripts { } 以上,通过构造函数创建Product的时候,只用到了一个参数,data。在实例化Product的时候,给Product各个成员赋默认值。另外,还... 阅读全文
posted @ 2014-11-01 21:38 Darren Ji 阅读(842) 评论(0) 推荐(0) 编辑
摘要: 本篇体验使用ko.computed(fn)计算、组合View Model成员、Select元素的绑定、使用构造器创建View Model、通过View Model的原型(Prototype)为View Model添加扩展方法。 □ 使用ko.computed(fn)计算成员 有时候,我们希望把View Model中的几个成员组合起来成为一个新成员,使用ko.computed(fn)可实现。... 阅读全文
posted @ 2014-11-01 20:49 Darren Ji 阅读(770) 评论(0) 推荐(0) 编辑
摘要: 本篇体验在ASP.NET MVC下使用Knockout,将使用EF Code First创建数据库。最后让Knockout绑定一个Json对象。 创建一个领域模型。namespace MvcApplication3.Models { public class Product { public int Id { get; set; } public... 阅读全文
posted @ 2014-11-01 19:28 Darren Ji 阅读(1214) 评论(0) 推荐(0) 编辑
摘要: ASP.NET Web API的消息处理管道可以理解为请求到达Controller之前、Controller返回响应之后的处理机制。之所以需要了解消息处理管道,是因为我们可以借助它来实现对请求和响应的自定义处理。所有的请求被封装到HttpRequestMessage这个类中,所有的响应被封装到HttpResponseMessage这个类中。 既然消息处理管道是可扩展的,那么,ASP.NET W... 阅读全文
posted @ 2014-10-28 10:21 Darren Ji 阅读(940) 评论(0) 推荐(1) 编辑
摘要: ASP.NET Web API路由,简单来说,就是把客户端请求映射到对应的Action上的过程。在"ASP.NET Web API实践系列03,路由模版, 路由惯例, 路由设置"一文中,体验了通过模版、惯例、HTTP方法来设置路由,这种做法的好处是把路由模版统一放在了App_Start文件夹下的WebApiConfig类中,方便管理,但缺点是不够灵活。 REST把一切都看成资源,有时候,一个资... 阅读全文
posted @ 2014-10-26 10:50 Darren Ji 阅读(2055) 评论(1) 推荐(3) 编辑
摘要: ASP.NET Web API的路由和ASP.NET MVC相似,也是把路由放在RouteTable中的。可以在App_Start文件夹中的WebApiConfig.cs中设置路由模版。默认的路由模版是: routes.MapHttpRoute( name: "API Default", routeTemplate: "api/{controller}/{id}", de... 阅读全文
posted @ 2014-10-25 09:54 Darren Ji 阅读(939) 评论(0) 推荐(1) 编辑
摘要: 本篇体验在MVC4下,实现一个对Book信息的管理,包括增删查等,用到了EF Code First, 使用Unity进行依赖注入,前端使用Bootstrap美化。先上最终效果: →创建一个MVC4项目,选择Web API模版。 →在Models文件夹创建一个Book.cs类。namespace MyMvcAndWebApi.Models { public class Book ... 阅读全文
posted @ 2014-10-24 23:41 Darren Ji 阅读(2171) 评论(2) 推荐(1) 编辑
摘要: 创建一个空的ASP.NET Web Form项目。 右键项目,添加新项,创建Web API控制器类,TestController。 删除掉TestController默认的内容,编写如下:using System.Web.Http; namespace WebApplication1 { public class TestController : ApiController ... 阅读全文
posted @ 2014-10-23 23:20 Darren Ji 阅读(1417) 评论(2) 推荐(1) 编辑
摘要: 设计嵌套评论数据库表可仿效无限级分类,在表中加一个ParentId字段。嵌套评论页面大致这样: 评论1 回复评论1 恢复评论1评论2 回复评论2 评论3...... 但是, 在显示评论的时候,如果使用ParentId会涉及到多表的联结,嵌套层级越多意味着表之间的联结增多,这样会影响查询效率。 于是,我们想到在表中增加一个字段,用来显示所有的层级:/1/2/5/ 设计... 阅读全文
posted @ 2014-10-22 17:07 Darren Ji 阅读(3710) 评论(1) 推荐(0) 编辑
摘要: 当一个类有多个构造函数的时候,常使用this构造器:public class SomeClass { public SomeClass() { //TODO:初始化一些字段 } public SomeClass(string temp) : this() { //TODO:初始化另外一些字段 } } 在这里,为什... 阅读全文
posted @ 2014-10-20 09:37 Darren Ji 阅读(1139) 评论(0) 推荐(0) 编辑
摘要: 在体验了"选择排序"和"插入排序",本篇体验的是"冒泡排序",依次遍历数组中的元素,按照升序排列,如果前一个位置元素比后一个位置元素大,两者就交换位置。 自定义一个处理整型数组的类,包含添加、显示、清除及冒泡方法以及获取数组长度的属性。 class MyIntArray { private int[] arr; private int upper; ... 阅读全文
posted @ 2014-10-18 09:36 Darren Ji 阅读(1777) 评论(0) 推荐(0) 编辑
摘要: 在Visual Studio 2012中使用Entity Framework,根据模型生成数据库时,报如下错误: 无法在自定义编辑器中打开Transact-SQL文件此版本的SQL Server Data Tools与此计算机中安装的数据库运行时组件不兼容 解决办法:下载"Server Data Tools for Visual Studio 2012" ,并安装,重新启动Visual Studi... 阅读全文
posted @ 2014-10-14 09:03 Darren Ji 阅读(1536) 评论(0) 推荐(0) 编辑
摘要: 当我们需要统计一段代码的执行时间,首先想到的可能是Stopwatch类。在这里,先暂不使用Stopwatch,自定义一个统计代码执行时间的类,大致需要考虑到: 1、确保统计的是当前进程、当前线程中代码的执行时间。2、在统计执行过程中,不允许有垃圾回收。即在统计代码执行时间之前,就让GC完成垃圾回收。 举例:统计显示一个数组元素所消耗的时间 class Program { ... 阅读全文
posted @ 2014-10-13 21:59 Darren Ji 阅读(1289) 评论(0) 推荐(0) 编辑
摘要: 使用MVC和EF,在保存数据的时候报错:System.Data.Entity.Validation.DbEntityValidationException: 对一个或多个实体的验证失败。有关详细信息,请参阅“EntityValidationErrors”属性。 日志记录中,出错的地方在result += db.SaveChanges();所在行,尝试如下操作: →使用try...catch捕获... 阅读全文
posted @ 2014-10-06 12:37 Darren Ji 阅读(13893) 评论(3) 推荐(3) 编辑
摘要: 鼠标事件有Keydown, Keyup, Keypress,但Keypress与Keydown和Keyup不同,如果按ctrl, shift, caps lock......等修饰键,不会触发Keypress事件,而会触发Keydown和Keyup事件,这就是Keypress事件与Keydown、Keyup事件的不同之处。另外,通常使用Keypress事件来获取用户输入信息。 继续使用"Jav... 阅读全文
posted @ 2014-10-05 09:29 Darren Ji 阅读(867) 评论(0) 推荐(0) 编辑
摘要: 在"JavaScript进阶系列05,事件的执行时机, 使用addEventListener为元素同时注册多个事件,事件参数"中已经有了一个跨浏览器的事件处理机制。现在需要使用这个事件处理机制为页面元素注册事件方法。 □ 点击页面任何部分触发事件 创建一个script1.js文件。(function() { eventUtility.addEvent(document, "clic... 阅读全文
posted @ 2014-10-04 23:10 Darren Ji 阅读(741) 评论(0) 推荐(0) 编辑
摘要: 本篇体验JavaScript事件的基本面,包括: ■ 事件必须在页面元素加载之后起效■ 点击事件的一个简单例子■ 为元素注册多个点击事件■ 获取事件参数 ■ 跨浏览器事件处理 □ 事件必须在页面元素加载之后起效 有这样一段简单的代码: 现在,我们想给id为box的div添加事件,创建一个script.js文件。(function() { v... 阅读全文
posted @ 2014-10-04 08:48 Darren Ji 阅读(5111) 评论(0) 推荐(0) 编辑
摘要: 本篇主要体验函数参数个数不确定情况下的一个解决方案。先来看一段使用函数作为参数进行计算的实例。 var calculate = function(x, y, fn) { return fn(x, y); }; var sum = function(x, y) { return x + y; ... 阅读全文
posted @ 2014-10-04 08:41 Darren Ji 阅读(8592) 评论(0) 推荐(1) 编辑
摘要: 本篇体验通过硬编码、工厂模式、构造函数来创建JavaScript对象。 □ 通过硬编码创建JavaScript对象 当需要创建一个JavaScript对象时,我们可能这样写: var person = { firstName: "Darren", lastName: "Ji", getFullName: ... 阅读全文
posted @ 2014-10-03 16:11 Darren Ji 阅读(838) 评论(0) 推荐(0) 编辑
摘要: 有时候,把函数作为参数可以让代码更简洁。 var calculator = { calculate: function(x, y, fn) { return fn(x, y); } }; var sum = function(x, y) { return x + y; },... 阅读全文
posted @ 2014-10-03 09:18 Darren Ji 阅读(1096) 评论(0) 推荐(0) 编辑
摘要: 本篇主要体验JavaScript函数的声明、函数参数以及函数闭包。 □ 函数的声明 ※ 声明全局函数 通常这样声明函数: function doSth() { alert("可以在任何时候调用我"); } 通过这种方式声明的函数属于Window对象,可以在任何地方调用,即在doSth方法的之前和之后都可以调用。 可以在doSth方法之前... 阅读全文
posted @ 2014-10-03 07:40 Darren Ji 阅读(834) 评论(0) 推荐(0) 编辑
摘要: 谈到事件注册,EventHandler是最常用的。 EventHandler是一个委托,接收2个形参。sender是指事件的发起者,e代表事件参数。 □ 使用EventHandler实现猜拳游戏 使用EventHandler实现一个猜拳游戏,每次出拳,出剪刀、石头、布这三者的其中一种。 首先抽象出一个被观察者,其中提供了事件,提供了执行事件的方法。 public class F... 阅读全文
posted @ 2014-10-02 18:57 Darren Ji 阅读(1466) 评论(4) 推荐(2) 编辑
摘要: 在"实现观察者模式(Observer Pattern)的2种方式"中,曾经通过接口的方式、委托与事件的方式实现过观察者模式。本篇体验使用Action实现此模式,并从中体验委托与事件的区别。 □ 使用Action实现观察者模式 就举一个足球场上的例子,当裁判吹响终场哨,胜队庆祝,失败队落寞。把裁判看作是被观察者,比赛中的两队看作是观察者。 裁判作为被观察者需要提供一个Action委托供观... 阅读全文
posted @ 2014-10-02 11:44 Darren Ji 阅读(1407) 评论(0) 推荐(0) 编辑
摘要: 来看使用Action委托的一个实例: static void Main(string[] args) { int i = 0; Action a = () => i++; a(); a(); Console.WriteLine(i); ... 阅读全文
posted @ 2014-10-02 10:09 Darren Ji 阅读(1246) 评论(1) 推荐(0) 编辑
摘要: 委托是多播委托,我们可以通过"+="把多个方法赋给委托变量,这样就形成了一个委托链。本篇的话题包括:委托链是怎样形成的,如何调用委托链方法,以及委托链异常处理。 □ 调用返回类型为void的委托所形成的委托链方法□ 调用返回类型不是void的委托所形成的委托链方法□ 调用返回类型不是void的泛型委托所形成的委托链方法□ 调用Func泛型委托所形成的委托链方法□ 调用Action泛型委托所形成... 阅读全文
posted @ 2014-10-01 17:41 Darren Ji 阅读(973) 评论(0) 推荐(0) 编辑
摘要: 在"委托、Lambda表达式、事件系列02,什么时候该用委托"一文中,使用委托让代码简洁了不少。namespace ConsoleApplication2 { internal delegate bool MyCalculateDelegate(int val); class Program { static void Main(string[] args)... 阅读全文
posted @ 2014-10-01 15:47 Darren Ji 阅读(868) 评论(0) 推荐(0) 编辑
摘要: 假设要找出整型集合中小于5的数。 static void Main(string[] args) { IEnumerable source = new List(){2, 3, 4, 5, 6, 7, 8, 9,10, 11}; var result = GetNumbersLessThanFive(source); ... 阅读全文
posted @ 2014-10-01 11:01 Darren Ji 阅读(729) 评论(0) 推荐(1) 编辑
摘要: 委托是一个类。namespace ConsoleApplication1 { internal delegate void MyDelegate(int val); class Program { static void Main(string[] args) { } } } 使用Reflector查看委托的IL代码:... 阅读全文
posted @ 2014-10-01 10:07 Darren Ji 阅读(974) 评论(0) 推荐(2) 编辑
摘要: 默认情况下,当使用Visual Studio浏览网页时,网站会被保存在IIS Express上,这些网站需要手动清理。可以通过命令行或界面进行清理。 □ 通过命令行 →找到appcmd.exe在C:\Program Files\IIS Express文件夹中→输入如下命令进入C盘 →进入appcmd.exe所在文件夹→列出所有保存在IIS Express上的网站→如果想看到网站所在的文件夹... 阅读全文
posted @ 2014-09-27 23:32 Darren Ji 阅读(3623) 评论(2) 推荐(0) 编辑
摘要: 当需要监控某一文件,FileSystemWatcher类提供了Created, Deleted,Rename等事件。 就拿FileSystemWatcher的Created事件来说,该事件类型是FileSystemEventHandler。public delgate void FileSystemEventHandler(Object sender, FileSystemEventArgs ... 阅读全文
posted @ 2014-09-27 08:41 Darren Ji 阅读(2315) 评论(0) 推荐(0) 编辑
上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 18 下一页

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