欢迎访问小程序员!

在很多情况下,我们为了代码的复用可能会存在ViewModel共用的情形。比方说,web应用中常常会遇到的一个需求就是用户找回密码的功能。用户首先要验证通过验证邮箱(通常是用户名)来获取验证码,然后再进行密码重置。那么此时假设需要4个字段:Email、Password、ConfirmPassword、VerifiCode。那么就需要2个单独的页面中队这一个model进行分步验证了。google了一下,发现了一些有价值的解决方案。为了说明问题,写了一个小的Demo如下: ViewModel: public cl ....

1.连接字符串读取 1.1前言      本来我想在以后重构时,再来说这个问题。可是有园友问我:如何把数据库连接字符串写到Config.json并读取?      原来大家玩xml格式配置文件相当熟悉啦。可是ASP.NET 5项目换成越来越流行的JSON格式当配置文件。如果不去阅读源码,仅从Identity模板代码看,还是很迷糊。 1.2Config.json代码      在BlogASPNET5.ConsoleApp控制台项目(执行程序)中,添加Config.json文件,其代码: { &qu ....

.NET程序员也有自己的幸福,.NET的跨平台是一种幸福,.NET的开源也是一种幸福,而更幸福的是可以通过开源的.NET了解.NET是如何一步步走向跨平台的,所以幸福是一种过程。 在.NET跨平台的进程中,ASP.NET显然走在了前头,而通过探究ASP.NET 5是如何实现跨平台的,可以稍稍满足一下自己的好奇心。 体验ASP.NET 5跨平台有2种方式: 1)在Mac下,git签出XRE的源代码(前身是KRuntime),然后运行sh build.sh,就能完成整个XRE项目的生成。 2)在Mac下,写一个 ....

在企业应用系统领域,会面对不同系统之间的通信、集成与整合,尤其当面临异构系统时,这种分布式的调用与通信变得越重要。其次,系统中一般会有很多对实时性要求不高的但是执行起来比较较耗时的地方,比如发送短信,邮件提醒,更新文章阅读计数,记录用户操作日志等等,如果实时处理的话,在用户访问量比较大的情况下,对系统压力比较大。 面对这些问题,一般的我们会将这些请求,放在消息队列中处理;异构系统之间使用消息进行通讯。消息传递相较文件传递与远程过程调用(RPC)而言,似乎更胜一筹,因为它具有更好的平台无关性,并能够很好地支持 ....

匿名方法 匿名方法顾名思义,是没有名字的方法,但是仍有方法体,仍能干活。在很多地方可能你都见过它,比如js中,用的最多! 看看Msdn给的说法: 在 2.0 之前的 C# 版本中,声明委托的唯一方法是使用命名方法。 C# 2.0 引入了匿名方法,而在 C# 3.0 及更高版本中,Lambda 表达式取代了匿名方法,作为编写内联代码的首选方式。 不过,本主题中有关匿名方法的信息同样也适用于 Lambda 表达式。 有一种情况下,匿名方法提供了 Lambda 表达式中所没有的功能。 您可使用匿名方法来忽略参数列 ....

作为.NET进阶内容的一部分,垃圾回收器(简称GC)是必须了解的内容。本着“通俗易懂”的原则,本文将解释CLR中垃圾回收器的工作原理。 基础知识 托管堆(Managed Heap) 先来看MSDN的解释:初始化新进程时,运行时会为进程保留一个连续的地址空间区域。这个保留的地址空间被称为托管堆。 “托管堆也是堆”,为什么这样说呢?这么说是希望大家不要被“术语”迷惑,这个知识点的前提是“值类型和引用类型的区别”。这里假设读者已经知道“值类型存储在栈中,引用类型存储在堆中。(引用类型的引用存储在栈中)”这一重要概 ....

从github上签出基于ASP.NET 5的MVC 6的源代码进行编译,发现有2个编译命令: build.cmd是针对Windows的编译命令,build.sh是针对Mac/Linux的编译命令,这本来没什么稀奇,但是打开这2个文件一看: build.cmd: packages\Sake\tools\Sake.exe -I packages\KoreBuild\build -f makefile.shade %* build.sh: mono packages/Sake/tools/Sake.exe - ....

字符串的特性 1.不可变性        由于字符串是不可变的的,每次修改字符串,都是创建了一个单独字符串副本(拷贝了一个字符串副本)。之所以发生改变只是因为指向了一块新的地址。        ps:vs2005  即时窗口  &变量,取地址。。               vs2010以上  即使窗口  *变量 ,只取堆地址。 2.字符串池(只针对字符串常量)       当一个程序中有多个相同的字符串常量时,多个变量指向的是内存中同一块字符串!这个特性叫字符串池。之所以字符串,不会造成程序混乱, ....

1.获取方式 第一种方法: 在程序包控制台中执行命令 PM> Install-Package routedebugger 安装成功后Web.config文件中会自动加入行 <add key="RouteDebugger:Enabled" value="true" /> 第二种方法: 下载之后,解压之后得到RouteDebugger.dll,引用到web项目中。 手动在web.config中加入 <add key="RouteD ....

介绍SignalR ASP.NET SignalR 是一个为 ASP.NET 开发人员的库,简化了将实时 web 功能添加到应用程序的过程。实时Web功能使服务端代码推送内容到链接可客服端并立即应用成为可能,而不需要服务端等待客户端去请求数据。 SignalR可用于任何你想添加实时Web功能到ASP.NET应用程序的情形,聊天室是一个常用的例子,用户可以刷新Web页面来获得新的数据,或者页面使用一个长轮询来取回数据,这都是SignalR可以应用的场景。比如说仪表盘和监视系统,实时游戏等。 SignalR支持 ....

我们今天学习的内容其实还是蛮多的,学习了自动属性,扩展方法,复习初始化器,以及LinQ的一些方法,其实感觉有些还是很熟悉的,在前面的学习过程中有时间感觉学习的知识知道了怎么使用,但是还没有在项目中使用,做的习题似乎意义不大,现在依旧如此,感觉仅限于知道怎样使用。很想做一个小小的项目来熟悉下学习的知识。。。下面就总结下今天学习的内容。           一.自动属性 private int productid; public int Productid { ....

web程序的运行方式         客户端输入网址访问服务器的一个网页,客户进行相应的操作之后通过表单提交给服务器进行处理。每次提交服务器都会从新执行一次该网页下对应的程序! Page_Load事件        执行时间,页面第一加载的时候执行,每次页面提交给服务器操作或刷新页面时执行。        作用:(1)Page_Load事件每次加载页面的时候都执行我们可以用他来绑定数据来显示。                 (2)有时候我们需要页面初始化(第一次加载)执行一些程序,再次加载的时候不在执行! ....

在数据采集及大数据处理的时候,数据排重、相似度计算是很重要的一个环节,由此引入相似度计算算法。常用的方法有几种:最长公共子串(基于词条空间)、最长公共子序列(基于权值空间、词条空间)、最少编辑距离法(基于词条空间)、汉明距离(基于权值空间)、余弦值(基于权值空间)等,今天我们着重介绍最后两种方式。 余弦相似性 原理:首先我们先把两段文本分词,列出来所有单词,其次我们计算每个词语的词频,最后把词语转换为向量,这样我们就只需要计算两个向量的相似程度. 我们简单表述如下 文本1:我/爱/北京/天安门/ 经过分词求 ....

前言       相信大家对Entity Framework一定不陌生,我相信其中Linq To Sql是其最大的亮点之一,但是我们一直使用到现在却不曾明白内部是如何实现的,今天我们就简单的介绍IQueryable和IQueryProvider。   IQueryable接口       我们先聊聊这个接口,因为我们在使用EF中经常看到linq to sql语句的返回类型是IQueryable,我们可以看下这个接口的结构: 1 public interface IQueryable : IEnumerabl ....

基础知识 对于面向对象的语言来说,所有类型都是从System.Object类型派生,正是由于这个原因,保证了每个类型都有一组最基本的方法,也就是从他们的父类System.Object继承古来的方法,Object的定义如下面的代码所示,System.Object所定义的基本方法中基本包含了CLR所有的方法类型,静态方法(Static修饰,属于类成员)、虚方法(Virtural修饰,属于实例成员)、实例方法(普通的方法,属于实例成员)。可能会有人说还有抽象方法,其实抽象方法最后的编译也是一个虚方法。 CLR的最 ....

最近有朋友问到在winform程序上要做换肤功能的话,该如何处理,刚好前一段时间在项目中主导了程序换肤的这个功能.那就借这个机会整理一下,以分享给有需要的朋友. 1. 在winform程序上换肤,需要处理的涉及到每个控件及窗体.熟悉前端的朋友应该知道,在网页上实现换肤主要通过在每个元素上定义指定的标识符(如class,id等特性),然后页面通过加载不同的样式文件去渲染不同的皮肤效果,其实在winform程序中实现的思想应该是一致. 2.如上描述,我们可能需要定制使用到的每个控件,以便能读取指定的样式,并能根 ....

本篇主题内容是.NET GDI+图形图像编程系列的教程,不要被这个滚动条吓到,为了查找方便,我没有分开写,上面加了目录了,而且很多都是源码和图片~ GDI+绘图基础 编写图形程序时需要使用GDI(Graphics Device Interface,图形设备接口)。 从程序设计的角度看,GDI包括两部分:GDI对象和GDI函数。GDI对象定义了GDI函数使用的工具和环境变量;而GDI函数使用GDI对象绘制各种图形。 在C#中,进行图形程序编写时用到的是GDI+(Graphics Device Interfac ....

更新数据 在启用二级缓存时候,我们将数据查询出来后,如果对数据进行了修改,再查看二级缓存中的数据,此时的数据是什么呢? 一个例子 修改CustomerData类,添加如下三个方法用于测试 1 /// <summary> 2 /// 开启二级缓存的情况下,修改customer对象 3 /// </summary> 4 /// <param name="customer">< ....

二级缓存 关于二级缓存的详细可以参考[NHibernate]缓存(NHibernate.Caches)。 NHibernate session有一个内部的(一级)缓存,存放着它的实体。这些缓存没有共享,因此session被销毁时它的缓存也被销毁了。NHibernate提供了二级缓存系统;它在SessionFactory级别工作。因此它被同一个SessionFactory产生的session共享。 在NHibernate中,当我们启用NHibernate二级缓存。 使用ISession进行数据操作时,NHib ....

一级缓存  关于缓存的详细内容可以查看nhibernate文档[NHibernate]缓存(NHibernate.Caches)。 NHibernate session有一个内部的(一级)缓存,存放着它的实体。这些缓存没有共享,因此session被销毁时它的缓存也被销毁了。 NHibernate提供了二级缓存系统;它在SessionFactory级别工作。因此它被同一个SessionFactory产生的session共享。 使用每个请求(request)一个session模式,很多Session可以并发的访 ....