RSS 2.0 Feed
2007-12 Entries
摘要:【原文地址】December 16th Links: ASP.NET, ASP.NET AJAX, ASP.NET MVC, VS, .NET, IIS7, WPF 【原文发表日期】Sunday, December 16, 2007 11:29 PM 这是我的链接系列的最新篇。也请参阅我的ASP.NET 技巧,诀窍和教程网页里 我以前写的众多很受欢迎的文章的链接。 ASP.NET Creating an Outlook Navigation Bar using the ListView and Accordion Controls: Matt Berseth撰写了一个很棒的例程,描述如何使用新的ASP.NET 3.5 ListView服务器控件和ASP.NET AJAX控件工具包中的Accordion控件来实现类似Outlook的导航菜单。 What is New in the ASP.NET 3.5 Extensions Preview: Brad Abrams在博客里讨论了一些例子,这些例子展示了新的<asp:MediaPlayer> Silverlight 控件,以及<asp:ScriptManager>控件中内置的历史管理。 ASP.NET AJAX ASP.NET AJAX SliderExtender Layout and Custom Appearance: Alessandro Gallo撰有一篇好帖,描述了如何定制ASP.NET AJAX控件工具包中的SliderExtender控件的布局和外观。 Debugging ASP.NET AJAX Applications with the Trace Console: Matt Berseth的又一精彩文章,描述了如何使用ASP.NET AJAX中的Sys.Debug JavaScript类,把调试内容输出到一个自定义的跟踪窗口。 ASP.NET MVC IoC Container Support for Windsor, StructureMap and Spring.Net: Jeffrey Palermo在博客里讨论了建立在ASP.NET MVC框架之上的新MVCContrib开源项目,它现在包括了对大多数流行的......[阅读全文]

posted @ | Feedback (4) | Filed Under [ ASP.NET .NET Visual Studio WPF Link Listing ]

摘要:【原文地址】New ASP.NET Dynamic Data Support【原文发表日期】 Friday, December 14, 2007 12:41 AM 上个周末发布的ASP.NET 3.5 Extensions CTP预览版包括了一堆很棒的新特性。 其中一个新特性是我们称之为“ASP.NET Dynamic Data Support(动态数据支持)”的东西。简单地说,这个东西允许你极其快速地建造可以使用LINQ to SQL(在将来LINQ to Entities)对象模型的数据驱动的网站,还允许你不用手工建造任何网页。 看它在实战中的例子的最佳方式是观看David Ebbo的精彩的17分钟屏播: 你也可以按下面的步骤来轻松上手,开始使用动态数据支持: 第一步: 创建ASP.NET动态数据网站 在安装ASP.NET 3.5 Extensions CTP预览版之后,你可以使用VS 2008或免费的Visual Web Developer 2008 Express版来创建启用ASP.NET动态数据支持的新网站项目或新Web应用项目: 这会创建一个可用的新网站,其中包括了一些默认的模板文件,以及你可以用来定制模板文件观感(look and feel)的CSS样式表: 第二步: 添加LINQ to SQL数据模型 LINQ to SQL是.NET 3.5中内置的O/RM(对象关系映射器),它允许你使用.NET类来对关系数据库建模。然后你可以使用LINQ来对数据库进行查询,以及在其中更新、插入和删除数据。 LINQ to SQL完全支持事务,视图和存储过程。它还提供了简易方式来将数据验证和业务逻辑规则集成进你的数据模型。 开始使用ASP.NET动态数据网站的最简便的方式是向你的项目中添加一个新的LINQ to SQL数据模型(右击->添加新项->LINQ to SQL类)。这会调出LINQ to SQL类设计器。从你的服务器管理器中把数据库数据表拖拉到设计器表面,为你的数据库数据定义(schema)来建立一些类(包括其间的关系): 第三步: 在项目中启用动态模板 在默认情形下,ASP.NET动态数据项目提供了内置支持,为你的LINQ to SQL和LINQ to Entities数据模型创建自动的“scaffolding(脚手架)”视图。动态数据项目包括了一些模板页和用户控件,可以自动地创建内置的浏览、编辑、选择和删除数据的用户界面,这些界面是根据你加到项目里的LINQ to SQL或者LINQ to Entities数据模型,在运行时动态构建的。 为启用这个自动scaffolding的支持,打开你项目的web.config文件,找一下其中的dynamicData节,把它的enableTemplates属性设为true: 注: 这个自动scaffolding特性在默认情形下为安全的原因是关掉的(我们要你明确地设置来启用这个特性)。 注: 就象你在上面看到的那样,ASP.NET动态数据配置节还提供了可选的URL映射支持,该支持允许你将你的动态scaffold网页定制成你想要的任何URL格式。 第四步: 运行你的网站 按F5运行你的项目,默认情形下,你会被转到default.aspx网页,上面列出了你数据模型中的所有数据表对象: 注: default.aspx主页是项目中的一个文件,如果你不喜欢这个网页的样子,你可以打开它,编辑成你想要的样子。......[阅读全文]

posted @ | Feedback (4) | Filed Under [ ASP.NET .NET LINQ Data ]

摘要:【原文地址】ASP.NET 3.5 Extensions CTP Preview Released 【原文发表日期】 Sunday, December 09, 2007 8:55 PM 今天早些时候,我们发布了我们一直在开发的ASP.NET 3.5 Extensions的第一个CTP预览版(点击这里阅读我以前写的关于我们产品路线图的帖子)。这个预览版给ASP.NET和.NET 3.5带来了额外的运行时功能。你可以在这里下载(如果你要使用MVC功能的话,也请点击这里下载MVC工具包)。 ASP.NET 3.5 Extensions第一个预览版包括: ASP.NET AJAX改进: ASP.NET 3.5 Extensions中新的ASP.NET AJAX功能包括,更好的浏览器历史的支持(向后/向前按钮的集成,服务器端历史管理支持等),使用永久链接(permalinks)改进的AJAX内容链接支持,以及额外的JavaScript库的改进。 ASP.NET MVC: 这个ASP.NET模型,视图,控制器(MVC)框架提供了一个结构化的模型,促成web应用中的清晰的关注分离,方便你单元测试代码和支持TDD流程。它还提供了对你发布在应用中的URL更多的控制,以及对从中输出的HTML的更多的控制等。 ASP.NET动态数据支持: ASP.NET 3.5 Extensions提供了一些能促进快速开发数据驱动的web应用的特性,提供了丰富的支架(scaffolding)框架,将促进使用ASP.NET WebForms和ASP.NET MVC来快速开发数据驱动的网站。 ASP.NET Silverlight支持: 在ASP.NET 3.5 Extensions中,我们将提供将Silverlight轻松集成进你的ASP.NET应用的支持,这些支持将包括一些新控件,它们方便你在网站上集成Silverlight视频,音频和可交互性内容。 ADO.NET Data Services: 与此同时,我们还将发布ADO.NET Entity Framework(实体框架)。这提供了一个新的建模框架,允许开发人员定义与数据库数据定义相对应的概念性模型,这个概念性模型与信息的现实世界观更为接近。我们还将发布一套新的数据服务(代号名为“Astoria”),方便你从ASP.NET应用中呈示基于REST的API端点。 我们将在以后的日子发表许多博客帖子和录像,讨论相关的新特性。点击这里查看一套初始的Quickstart例程,这些例程讨论了预览版的一些新特性。 在下面,你可以找到我撰写的几个教程帖子(以及Phil Haack的一个非常酷的TDD帖子)的链接,这些帖子讨论了新的ASP.NET MVC框架。我还将在以后撰写更多的贴子讨论扩展预览版中跟MVC无关的特性: ASP.NET MVC框架(第零部分): 概述 ASP.NET MVC框架(第一部分): 建造MVC应用  ASP.NET MVC框架(第二部分): URL路径选择 ASP.NET MVC框架(第三部分): 把ViewData从控制器传到视图 ASP.NET MVC框架(第四部分): 处理表单编辑和提交场景 Scott Hanselman的 ASP.NET MVC初览屏播 TDD and Dependency Injection with the ASP.NET MVC Framework Writing Unit Tests for Controller Actions 想问问题或求助的话,请访问http://forums.asp.net上的这些论坛: General ASP.NET 3.5 Extensions Preview Forum ASP.NET AJAX UI Forum ASP.NET MVC Framework Forum ASP.NET Dynamic Data Forum ADO.NET Data Services......[阅读全文]

posted @ | Feedback (18) | Filed Under [ ASP.NET .NET Community News MVC ]

摘要:【原文地址】ASP.NET MVC Framework (Part 4): Handling Form Edit and Post Scenarios 【原文发表日期】 Sunday, December 09, 2007 4:42 AM 过去的几个星期内,我一直在写着讨论我们正在开发的新ASP.NET MVC框架的系列贴子。ASP.NET MVC框架是个你可以用来结构化你的ASP.NET web应用,使之拥有清晰的关注分离,方便你单元测试代码和支持TDD流程的可选方法。 这个系列的第一篇建造了一个简单的电子商务产品列表/浏览网站。它讨论了MVC后面的高层次的概念,示范了如何从头创建一个新的ASP.NET MVC项目,实现和测试这个电子商务产品列表功能。系列的第二篇对ASP.NET MVC框架的URL路径选择(routing)架构做了深入探讨,讨论了它的工作原理以及你如何使用它来处理更高级的URL路径选择场景。 第三篇讨论了控制器是如何与视图做交互的,特别地讨论了你可以把视图数据从控制器传给视图以显示返回到客户端的回复的各种方法。 在今天的帖子里,我将讨论你可以用MVC框架来处理表单输入和提交场景的各种方法,以及讨论一些你可以用来简化数据编辑场景的HTML辅助方法。点击这里下载我们将在下面为解释这些概念而建造的完整的应用的源代码。 表单输入和提交场景 为示范如何在ASP.NET MVC框架中处理表单输入和提交场景的一些基本原则,我们将建造一个简单的产品列表,产品生成,和产品编辑场景。它将拥有三个核心的用户体验: 按类列出的产品列表 通过导航到/Products/Category/[CategoryID] 这样的URL,用户将能看到在某个特定产品分类内的所有产品的列表: 添加新产品 用户将能通过点击上面的“添加新产品”的链接往商店里添加一个新产品。点击之后,会转到/Products/New URL,在这里,系统将提示用户输入要添加的新产品的细节: 在点击Save(保存)之后,产品就会添加到数据库中,然后就会转向返回到产品列表网页。 编辑产品 在产品列表网页上,用户可以点击每个产品旁边的“Edit”(编辑)链接。这会转到/Products/Edit/[ProductID] URL,在这里,用户可以改动产品的细节,然后点击Save按钮,往数据库里更新: 我们的数据模型 我们将使用SQL Server Northwind样品数据库来存储我们的数据。然后我们将使用.NET 3.5内置的LINQ to SQL对象关系映射器(ORM)来对Product, Category, 和 Supplier对象进行建模,这些对象代表了我们的数据库数据表中的记录行。 一开始,在ASP.NET MVC项目中,右击/Models子目录,选择“添加新项” -> “LINQ to SQL 类”,调出 LINQ to SQL ORM 设计器来对我们的数据对象建模: 然后我们将在项目中创建一个NorthwindDataContext部分类(partial class),向里面添加一些辅助方法。我们定义这些辅助方法有2个原因: 1)避免在我们的Controller类中直接嵌入我们的LINQ查询,2) 将允许我们在将来更容易地改变我们的控制器以使用dependency injection(依赖注入)。 我们将添加的NorthwindDataContext辅助方法是象下面这样的: 想进一步了解LINQ和LINQ to SQL的话,请参阅我这里的LINQ to SQL系列。 建造我们ProductsController控制器 我们将使用单一控制器类来实现这三个核心用户浏览体验,我们将称这个控制器类为“ProductsController”(在Controllers子目录上右击,选择“添加新项” -> “MVC 控制器”来创建这个类: ......[阅读全文]

posted @ | Feedback (15) | Filed Under [ ASP.NET .NET MVC ]

摘要:【原文地址】ASP.NET MVC Framework (Part 3): Passing ViewData from Controllers to Views 【原文发表日期】 Thursday, December 06, 2007 2:49 AM 【译注】根据Scott Guthrie原文的回复,ASP.NET MVC框架的第一个CTP将于12月7日发布 过去的几个星期内,我一直在写着讨论我们正在开发的新ASP.NET MVC框架的系列贴子。ASP.NET MVC框架是个你可以用来结构化你的ASP.NET web应用,使之拥有清晰的关注分离,方便你单元测试代码和支持TDD流程的可选方法。 这个系列的第一篇建造了一个简单的电子商务产品列表/浏览网站。它讨论了MVC后面的高层次的概念,示范了如何从头创建一个新的ASP.NET MVC项目,实现和测试这个电子商务产品列表功能。系列的第二篇对ASP.NET MVC框架的URL路径选择(routing)架构做了深入探讨,讨论了它的工作原理以及你如何使用它来处理更高级的URL路径选择场景。 在今天的帖子里,我将讨论控制器是如何与视图做交互的,具体来说,我将讨论你可以把数据从控制器传到视图以显示返回到客户端的回复的各种方式。 第一部分的扼要简述 在这个系列的第一部分,我们创建了一个电子商务网站,实现了基本的产品列表/浏览支持。我们是用ASP.NET MVC框架实现这个网站的,这个方法会很自然地将代码结构化为独特的控制器,模型和视图组件。 当浏览器向我们的网站发送一个HTTP请求时,ASP.NET MVC框架将使用它的URL路径选择引擎,把进来的请求映射到一个控制器上的action方法来处理它。在基于MVC的应用中的控制器负责处理进来的请求,处理用户输入和交互,执行基于这些输入和交互的应用逻辑(获取或更新存储在数据库中的模型数据等等)。 到生成返回到客户端的HTML回复的时候,控制器一般是与“视图”组件合作,这些视图组件是以独立于控制器的单独的类或模板的形式实现的,其目的是完全注重于封装显示逻辑。 视图不应该含有任何应用逻辑或数据库访问代码,所有的应用/数据逻辑应该由控制器类来处理。这么划分的动机是帮助强制你的应用/数据逻辑与界面生成代码间的清晰分离。同时这也方便你独立于你的界面显示逻辑来单元测试你的应用/数据逻辑。 视图应该只使用从控制器传过来的特定于视图的数据来生成输出。在ASP.NET MVC框架中,我们称这个特定于视图的数据为“ViewData”。这个博客的其他部分将讨论你可以用来将ViewData从控制器传递给视图来生成显示的一些不同方法。 一个简单的产品列表场景 为帮助说明我们可以用来把ViewData从控制器传递给视图的一些技术,让我们来建造一个简单的产品列表网页: 我们将用一个CategoryID整数来过滤我们想要显示在页面上的产品。注意上面我们是如何把CategoryID嵌在URL中的(例如,Products/Category/2 或 /Products/Category/4 )。 然后,我们的产品列表网页显示了2个不同的动态内容元素。第一个元素是我们要显示的分类的文本名称(例如,Condiments-调味品),第二个元素是一个HTML <ul><li/></ul> 产品名字列表。我在上面的屏幕截图中对这2个元素用红笔画了圈。 在下面,我们将看一下我们可以使用的2个不同的方法来实现ProductsController类,这个类处理进来的请求,获取处理请求所需的数据,然后将这个数据传给一个List视图来显示。我们要研究的第一个方法是用后期绑定的字典对象传递这个数据,第二个方法则使用强类型类的方式来传递这个数据。 方法 1:使用 Controller.ViewData 字典来传递ViewData Controller基类有个ViewData字典属性,可以用来填充你要传给视图的数据。你使用键/值模式将对象加入 ViewData 字典。 下面是个ProductsController类,其中的Category action方法实现了我们上面的产品列表场景。注意,它是如何使用分类的ID参数来查询该分类的文本名称,以及获取该分类中的产品列表的。它使用“CategoryName”和“Products”两个键将这两个数据存储在Controller.ViewData 集合中:   然后,我们上面的Category action方法调用 RenderView("List") 来表示它要用哪个模板来做显示。当你象这样调用RenderView时,它会将ViewData字典传给视图,以显示对应的回复。 实现我们的视图 我们将使用居于我们项目的\Views\Products目录下的List.aspx文件来实现我们的List视图。这个 List.aspx 将继承 \Views\Shared 文件夹中的Site.Master母版页中的布局(在你创建一个新的视图网页时,你可以在 VS 2008 中,右击,选择添加新项->MVC视图内容网页来接连一个母版页): 当我们使用MVC视图内容网页模板来创建List.aspx网页时,它不是从通常的 System.Web.UI.Page 类继承而来,而是从System.Web.Mvc.ViewPage......[阅读全文]

posted @ | Feedback (19) | Filed Under [ ASP.NET .NET MVC ]

摘要:【原文地址】ASP.NET MVC Framework (Part 2): URL Routing【原文发表日期】 Monday, December 03, 2007 2:44 AM 上个月,我发表了我要撰写的系列贴子中的第一篇,这些帖子将讨论我们正在开发的新ASP.NET MVC框架。这个系列的第一个贴子建造了一个简单的电子商务产品列表/浏览场景,讨论了MVC后面的高层次的概念,示范了如何从头创建一个新ASP.NET MVC 项目,实现和测试电子商务产品列表的功能。 在今天的贴子里,我将深入讨论ASP.NET MVC框架的路径选择(routing)架构,讨论一些很酷的定制方式,你可以将其用于你应用中的一些更高级的场景。 第一部分的扼要简述 在这个系列的第一部分里,我们创建了一个电子商务网站,呈示了三类URL: URL格式 行为 URL例子 /Products/Categories 浏览所有的产品分类 /Products/Categories /Products/List/Category 列出一个分类中的产品 /Products/List/Beverages /Products/Detail/ProductID 显示一个特定产品的细节 /Products/Detail/34 我们通过创建象下面这样一个ProductsController类来处理这些URL: 在把上面这个类加到我们的应用中后,ASP.NET MVC框架就会把进来的URL自动导向到我们的控制器上的适当的action方法来处理请求。 在今天的贴子里,我们将深入讨论这个URL映射是如何发生的,以及探讨我们可以在ASP.NET MVC框架中利用的更高级的路径选择(routing)场景。我还将示范你如何可以轻松地单元测试URL路径选择场景。 ASP.NET MVC URL路径选择系统都做些什么? ASP.NET MVC框架包括了一个很灵活的URL路径选择系统,它允许你在应用中定义URL映射规则。路径选择系统有2个主要目的: 把进来的URL映射到应用,并把它们做导向,这样,正确的Controller和Action方法执行来处理这些请求 构建可以用来回调Controllers/Actions的输出到客户端的URL(例如,表单提交, <a href=""> 链接, 和 AJAX 调用等等) 能够使用URL映射规则来同时处理进来的和输出的URL场景给应用代码添加了许多灵活性。这意味着,如果我们以后想改变应用的URL结构的话(譬如,把 /Products 改名为 /Catalog),我们可以修改应用层次的一套映射规则即可,而不需要改动控制器或视图模板中的任何代码。 默认的ASP.NET MVC URL路径选择规则 在默认情形下,当你使用Visual Studio用ASP.NET MVC Web Application模板来创建一个新项目时,它会往项目里添加一个ASP.NET Application类。这是在Global.asax后台代码中实现的: ASP.NET Application类允许开发人员处理应用启动/中止以及全局性的错误处理的逻辑。 默认的ASP.NET MVC项目模板自动向该类添加一个Application_Start方法,在其中注册2条URL路径选择规则: 上面的第一条路径选择规则表示,ASP.NET MVC框架在默认情形下,在决定用哪个Controller类来生成实例,调用哪个Action方法时(以及哪些需要传入的参数时),应该使用"[controller]/[action]/[id]"的格式把URL映射到控制器上。 这个默认的路径选择规则就是为什么第一部分中我们的电子商务浏览例程中对URL /Products/Detail/3 的请求自动调用我们的ProductsController类的Detail方法,并且传入3作为id参数值的原因: ......[阅读全文]

posted @ | Feedback (25) | Filed Under [ ASP.NET .NET MVC ]

摘要:【原文地址】ASP.NET AJAX Control Toolkit and Web Deployment Project Releases for VS 2008 【原文发表日期】 Saturday, December 01, 2007 11:26 AM 这个星期,我的团队发布了ASP.NET AJAX控件工具包以及Visual Studio Web部署项目包的更新版。这两个更新版是设计来在VS 2008和.NET 3.5下工作的。 ASP.NET AJAX控件工具包 ASP.NET AJAX控件工具包是个免费下载,内含40多个AJAX控件和组件,它们是建立在目前已经成为.NET 3.5一部分的核心ASP.NET AJAX功能之上的(对ASP.NET 2.0,你可以单独下载这个工具包)。除了微软开发人员有贡献代码外,这个项目还有几十个非微软的代码贡献者,添加了非常棒的功能和控件。 这个星期发布的ASP.NET AJAX控件工具包更新版修补了大家在VS 2008 Web设计器中使用控件工具包的extender控件时遇上的一些问题。所做的唯一改动是调整控件工具包程序集的版本号(David Anson在这里有该改动的有关详情)。我绝对推荐你去下载这个更新版,如果你在使用VS 2008或者Visual Web Developer 2008 Express版的话。 你还可以通过我的链接系列找到一系列关于ASP.NET AJAX和ASP.NET AJAX控件工具包的文章(特别是要阅读一下我这个贴子,那是个专门的ASP.NET AJAX链接帖子)。也读一下我以前的在VS 2008中使用ASP.NET AJAX控件Extenders的贴子,以了解VS 2008和Visual Web Developer 2008 Express版本中ASP.NET AJAX控件工具包的集成设计时支持的有关详情。 最后,去看一下www.asp.net网站上这里以及这里的精彩ASP.NET AJAX录像。 Visual Studio 2008 Web部署项目支持 昨天深夜我的团队还发布了VS 2008的VS 2008 Web部署项目下载选项。Web部署项目可以在内置于VS 2008中的“网站项目”或者“Web应用项目”选项下使用,提供了你可以使用的另外的编译,包装和部署选项。你可以阅读一下我这里的一篇老的教程帖子了解它们的工作原理。 这个星期的VS 2008 Web部署项目下载支持VS 2005 web部署项目现提供的所有功能,此外,它还加了下述支持: 从VS 2005 Web部署项目轻松地移植到VS 2008 Web部署项目 在web部署项目编译成功时才替换其输出 IIS7支持 你可以在这里了解这个星期的下载的有关详情,可以在这里直接下载。我们把这个星期的下载称为“十二月份CTP”,这样我们可以融合大家对新的特性的反馈。然后,我们将在下个月在网上发布其最终版。 希望本文对你有所帮助, Scott 标签: ASP.NET, Visual Studio, .NET, Atlas,......[阅读全文]

posted @ | Feedback (7) | Filed Under [ ASP.NET .NET Visual Studio Atlas Community News ]