展翅,只为SHOW

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::

2013年10月24日

摘要: 问题当排序和分页和过滤都不够帮用户去找到他们想要的结果时,想一个最好的备选方式是让用户输入(关键字)他们想要什么。解决方案用HtmlHelper创建一个新的From和 文本输入框,并且借助LINQ根据用户输入的关键字在之前过滤过的结果里查找。讨论和前边的秘方很像,添加一个根据keyword 搜索的功能需要更新 Book/Index view 和 BookController。在View里添加一个新的from和textbox 让用户输入keyword。同时也要确保当用户改变排序规则、过滤、分页时,关键字保持。下边的代码是对View的更新:双击代码全选12345678910111213141516 阅读全文
posted @ 2013-10-24 14:05 展翅,只为SHOW 阅读(167) 评论(0) 推荐(0)

摘要: 问题当排序和分页都不够帮用户去找到他们想要的结果时,另外一种帮助用户找到他们想要的结果的方式是根据特殊的规则过滤。解决方案添加新的links 允许使用预先的条件去过滤并且使用LINQ类库去在数据中过滤。讨论为了添加过滤的链接,需要在Book/Index view 和BookController中做改变。改变的View和前两个秘方差不多。需要添加HTML去允许用户去选择他们想如何过滤内容。三个连接将被添加:全部的,新发布的和即将到来的。新发布的将被定义为最近2周发布的。即将到来的就被定义为还没发布的。下边是新的 Book/Index view。有三个link。第一个link包含当前的sortOr 阅读全文
posted @ 2013-10-24 14:02 展翅,只为SHOW 阅读(169) 评论(0) 推荐(0)

摘要: 问题你有一个很庞大列表形式的结果,它加载的时间很长。或者你在这个很长的列表中不能很轻松的找到你的结果。把结果划分成多个页面将会减少页面载入的时间并且帮你更快的找到你想要的结果,特别是结果已经被排序的情况下。解决方案使用PagedList.MVC穿梭于各个记录列表页。讨论为一个应用程序分页你需要通过NuGet Library安装一个新的DLL“pagedList.MVC”。这将生成一个比完整的列表更好的分页列表。选择工具->Library Package Manager->Add Library Package Reference.在左边选择online 按钮。在搜索框里输入page 阅读全文
posted @ 2013-10-24 14:01 展翅,只为SHOW 阅读(188) 评论(0) 推荐(0)

摘要: 问题你有一个很庞大的列表(例如,图书列表),你不能很容易找到你想找的东西。以列表中某一列为基础排序,可以帮助你更快的去找到你想要的东西。解决方案在book list的标题上添加一个链接。当用户点击链接的时候,使用Dynamic Linq Library去为结果排序,给予选择的列。(升序或者降序)。再点一次链接的话,就会反转顺序。讨论和以前我用过的框架相比较,我对于在自动生成的View里添加一个排序有点惊讶。希望在未来版本的MVC中,脚手架可以帮我们去做这件事。另一件我需要做的事就是在ASP.NET MVC 的主页上提供一个或更多的选项可以去切换排序。在图书的例子里,只有5个列需要被排序,也不算 阅读全文
posted @ 2013-10-24 13:59 展翅,只为SHOW 阅读(165) 评论(0) 推荐(0)

摘要: 问题你网站的一个用户在你的网站已经注册了,但是他忘记了密码,现在需要一种方式去找回他。解决方案为了允许用户去找回他们的密码,必须在AccountController中添加一个新的action和一个新的view。这个功能将使用MemberShip类去寻找一个匹配的用户,并发送一个包含它密码的邮件到他们相关的邮箱。讨论默认情况下,MVC Internet Applications 使用的是单向 hash为密码加密。这样,密码不可能被找回。在下边的例子。默认的加密方法使用双向加密。这样虽然不是很安全。但是他避免了强迫那些忘记了密码的用户重置密码。作为开始,我们首先要修改web.config中关于me 阅读全文
posted @ 2013-10-24 13:58 展翅,只为SHOW 阅读(319) 评论(0) 推荐(0)

摘要: 场景 很多网站要求人们先注册再去访问内容或者发表评论.网站如牛毛,怎么可能让人们记住每个他们注册过的网站。在注册的过程中,可以发送一个电子邮件来提醒用户他们刚刚注册了,这样,他们可能一会还会返回到你的网站。解决方案在用户注册之后使用SmtpClient和MailMessage发送邮件通知。讨论发送一个邮件之前,你需要配置一个SMTP服务器,端口,用户名和密码。为了使配置简单化,我建议你在web.config的appsetting中配置。双击代码全选12345678910111213141516171819必要时可以去更新这些value 去反射你的SMTP server,port,usernam 阅读全文
posted @ 2013-10-24 13:56 展翅,只为SHOW 阅读(225) 评论(0) 推荐(0)

摘要: 场景 你要确保你的表单捕获的数据包含你预期的数据,这些数据是基于你的数据库或模型设计。解决方案.NET 4.0 包含了一个新的数据注解命名空间,提供了一些有用的元数据属性类。这些类已经被应用到MVC3。对于验证表单输入,下面的属性类可以用来提供各种各样 验证选项:RequiredAttribute,RegularExpressionAttribute,RangeAttribute和 DataTypeAttribute。当需要自定义的验证的时候,MVC的3还支持改进ValidationAttribute类,允许开发人员定义的验证。讨论接下来的例子是要去扩展“code-first book“mod 阅读全文
posted @ 2013-10-24 13:56 展翅,只为SHOW 阅读(202) 评论(0) 推荐(0)

摘要: 场景 互联网是由千百万个人使用。他们来自数百个不同的国家,使用数百种不同的语言。甚至在加拿大、美国和英国之间英语也有许多方言。所以,不在你的网站上仅仅呈现一种语言是重要的。解决方案创建资源文件,并且以键值对的形式添加静态文本,通过CurrentUICulture来提供改变语言的能力。讨论资源文件是基于文本的XML文件,用来支持静态网站多国语言。你创建一个主要的资源文件,包含你的默认语言。为文本创建一些key/value pair。然后,你就可以在你的controller、view、model中的任何地方使用这些文本了。下图是个例子注意圈红的地方要设置为public。如果一个文件的访问修饰符不是 阅读全文
posted @ 2013-10-24 13:54 展翅,只为SHOW 阅读(198) 评论(0) 推荐(0)

摘要: 场景 你要通过你的网站管理动态内容解决方案通过使用脚手架自动生成一个controller和多个views 允许用户Create, Read, Update, and Delete(CRUD)数据。通过EntityFramework 的 code-first(代码先行) and database-first (数据库先行)方法。讨论在用脚手架搭建contorller和view之前,一个model和DBContext需要被创建。它将定义model存了什么类型的数据。(这是代码先行的方法)在接下来的例子里。创建的2个类将提供管理一个图书列表的能力。第一个类包含图书数据的定义,将保存在SQL Expr 阅读全文
posted @ 2013-10-24 13:51 展翅,只为SHOW 阅读(453) 评论(0) 推荐(0)

摘要: 场景 你想阻止用户访问你网站的特定页面,除非用户已经注册并且使用了用户名和密码登陆。解决方案使用一个AccountController,AccountModels 和 几个MVC View,配合ASP.NET的 AuthorizeAttribute 特性,FormsAuthentication和Membership creation/validation讨论微软的MVC团队已经对账户controller做了很多的改进。它已经被更新用于Form验证,连同Membership 类去创建新的用户,验证存在的用户,创建cookie去检测用户登入的状态。在MVC 3中 已经提供了几种默认的应用程序模板。 阅读全文
posted @ 2013-10-24 13:34 展翅,只为SHOW 阅读(225) 评论(0) 推荐(0)