代码改变世界

Asp.net mvc获取View生成的html

2012-05-15 14:27 by watsonchia, 616 阅读, 0 推荐, 收藏, 编辑
摘要:客户端获取某个view生成的最终html是很容易的,用jquery的ajax只需要一句。$.get("/Home/Test",function(data){ //得到view的html});如果在服务端获取view生成的html,需要以下这个方法。stringViewToString(stringviewName,objectmodel){ if(string.IsNullOrEmpty(viewName)) viewName=ControllerContext.RouteData.GetRequiredString("action"); ViewDat 阅读全文

EF code first出现错误:列名 'Discriminator' 无效

2012-03-23 12:01 by watsonchia, 1284 阅读, 0 推荐, 收藏, 编辑
摘要:前几天使用code first碰到错误:列名 'Discriminator' 无效。这是一个很少见的错误,搜索了很久才发现是code first的poco实体对象的继承问题。比如,我定义了一个实体类,对应数据库的Project表:public class Project{ int Id { get; set; } string Name { get; set; }}后来又定义了一个子类ChildProject继承于它,但是子类不对应数据库任何表:public class ChildProject : Project{}于是每次EF的Context访问到Project或者Chil 阅读全文

Asp.net MVC定义短网址

2011-04-22 10:09 by watsonchia, 944 阅读, 0 推荐, 收藏, 编辑
摘要:在MVC的逻辑代码里,Controller和Action是必须的,但是在网址里,并不需要完全体现Controller和Action。比如我们经常希望看到http://localhost/About而不是http://localhost/Home/About。默认的路由规则新建MVC应用程序后,Global.asax里默认注册的路由规则是:public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); ... 阅读全文

Linq to Entities中的Datetime类型转换

2011-03-22 00:51 by watsonchia, 1933 阅读, 0 推荐, 收藏, 编辑
摘要:几个月前写过一篇文章,使用JavaScriptSerializer将Ado.net Entity Framework的实体转换为JSON。不过JavaScriptSerializer在序列化Datetime类型的处理有些特别:DateTime time = new DateTime(0x7b2, 1, 1, 0, 0, 0, DateTimeKind.Utc);DateTime dt=(DateTime)obj ;return string.Format(" new Date({0}) ", (long) ((dt.ToUniversalTime().Ticks - tim 阅读全文

Jquery AJax调用asp.net后台静态方法

2010-12-10 10:57 by watsonchia, 1752 阅读, 3 推荐, 收藏, 编辑
摘要:有了Asp.net Ajax的支持,Jquery Ajax可以调用asp.net页面静态后台方法,类似调用WebService。后台方法必须为static,访问范围为protect/public:需要注意的是,静态方法无法访问aspx上的服务端控件,这是可预测,因为并不会每次ajax调用都把带个页面post向服务端。WebMethod特性是必须的,这样才能被客户端脚本调用,支持远程调用。ScriptMethod特性是可选的,用于指定调用方法的 HTTP 谓词(GET 或 POST),以及指定输出格式(JSON或XML)。没有此特性,方法则默认只能被HTTP POST方式调用,并且输出将序列化为 阅读全文

WebBrowser爬虫,用IHTMLWindow2执行js脚本

2010-11-25 16:16 by watsonchia, 2298 阅读, 0 推荐, 收藏, 编辑
摘要:项目里需要某类代码数据,客户没有提供,让我们自己找,于是只好写爬虫上网抓数据。目标网站的分页栏没有写成链接,而是用js提交取得分页数据,没有办法直接遍历网址。想到最容易的办法是用WebBrowser控件模拟访问页面,取得当页数据后执行js分页提交。不过执行js需要引用Microsoft.mshtml.dll,右击项目->引用->在.NET标签下找到Microsoft.mshtml,引用... 阅读全文

Ado.net Entity Framework实体转换成JSON

2010-11-24 10:06 by watsonchia, 867 阅读, 0 推荐, 收藏, 编辑
摘要:这几天刚开始使用Ado.net Entity Framework,习惯性地使用DataContractJsonSerializer来序列化Entity Framework实体为JSON:但是出现了实体[IsRefrence ]=true,不能序列化的错误。我没有把Entity Framework实体此属性修改为false,而是使用JavaScriptSerializer:ok,可以序列化。但是En... 阅读全文

简单但完整的树形列表+多选(复选)框实现方式

2010-07-09 01:25 by watsonchia, 4169 阅读, 1 推荐, 收藏, 编辑
摘要:多级分类通常做成树形的,如果分类是单选的,只要递归返回树形结构,用下拉列表显示就ok了。当分类要求多选的时候,我们需要给每个分类都加上复选框。在Asp.Net里TreeView可以显而易见的做到这个,然而TreeView服务端控件不但生成比较ugly的html代码,而且所需写代码的时候其实也并不是最少。下面给出我的一个简单(代码数较少)但是完整的实现方式,除了显示,还包括取得选中值以及对树形列表赋... 阅读全文

用T4生成多个文件

2010-06-07 23:30 by watsonchia, 2175 阅读, 6 推荐, 收藏, 编辑
摘要:初次认识并尝试使用T4生成代码的时候,相关学习资料似乎比较少。不过现在VS2010的MSDN里已有相关章节,可参看《代码生成和文本模板》章节。可以用C#的语法写模板,实在舒服很多。很快就发现T4难以生成多个文件的缺陷,微软似乎也不着急改进这一点。通过搜索,从InfoQ找到一篇文章《用T4生成多个文件》,链接到一篇文章,Damien Guard的扩展可以方便的生成多个文件。原文是英文,能看懂,然而如... 阅读全文