文章标签 ‘ASP.NET MVC’
[转载]ASP.NET MVC把字符串格式化成URL的方法 – 兔纸 – 博客园. 兔纸 只有试着去欣赏她,对她时刻保持着好奇心,你才能真正的了解她。她,就是艺术。 ASP.NET MVC把字符串格式化成URL的方法 在ASP.NET MVC中URL Routing是一个很好的规范URL的方法.但有时候您也许会需要把指定的字符串格式化成正常和安全的URL.我们都知道,一般域名注册的要求是只能有 数字.字母和横线的,而我们常常会用到数据库中的信息作为Url中的一部分比如定位到文章作者页面的时候,常常会把作者的名字包含进去. 假如作者的名字叫tu zhi. 作者信息页面的URL假设是这样:<a href=”http://www.cnblogs.com/tu zhi”>兔纸</a>,其中tu zhi是从数据中取得的作者名称. 如果我们请求这条链接的时候,我们发现跳转后的地址是这样的:http://www.cnblogs.com/tu%20zhi 这样URL就会显得非常的不美观,也显得不规范.我们的目标是把它转换成http://www.cnblogs.com/tu-zhi 如果您说这也没什 么啊?我看%20就比较好看, 那么当作者姓名为tu&zhi的时候是什么情况呢? 有兴趣的话您可以试试看,闲话不多说了,直接进入正题. 对这种字符串的处理方法很简单,一个方法足矣: /// <summary> /// 转换成url /// </summary> /// <param name=”text”>文本</param> /// <returns>url字符</returns> public static string ToUrlName(this string text) { if (text == null) throw new Exception(“Can’t Url convert a null [...]
[转载]大叔手记(14):利用Routing特性提高ASP.NET MVC3站点的SEO权重 – 汤姆大叔 – 博客园. 简介 我们在开发互联网程序的时候,有个很重要的事情就是做搜索引擎优化(SEO),我们都知道ASP.NET MVC程序提供了友好的URL以及永久重定向的支持,这些友好的URL是利用Routing系统的特性来支持的,但是在这个Routing里有个问题,就 是多个不同的地址和指向同一个action方法,那对于搜索引擎来说就意味着你的站点有很多地址的内容都是重复的。 本章内容将展示如果解决这一问题。 正文 对于SEO,一个地址对应一个唯一独立的内容是保证最好权重的一个重要步骤,所以我们需要确保每一个URL地址对应的内容都是不重复的(对于MVC 来说也就是不同的Action),但ASP.NET MVC3程序默认是有问题的,比如HomtController.Index这个Action方法就可以被对应到多个地址上,例如: http://abc.com (默认) http://abc.com/ (斜杠结尾) http://abc.com/Home (带有Controller) http://abc.com/Home/Action (带有Controller和Action) http://abc.com/home/Action (不同的情况) 等等 要解决这个问题,一个办法是使用IIE URL Rewrite Extension,但是它配置起来挺复杂的,所以在这里我们来利用MVC自己的特性来解决这一问题(通过注册全局的filter),添加如下class: public class RemoveDuplicateContentAttribute : ActionFilterAttribute { public override void OnActionExecuting(ActionExecutingContext filterContext) { var routes = RouteTable.Routes; var requestContext = filterContext.RequestContext; var routeData = requestContext.RouteData; var [...]
[转载]ASP.NET MVC3关于生成纯静态后如何不再走路由直接访问静态页面 – wxj200589 – 博客园. 问题描述:高访问量类型的电子商务网站,需要将一些不是经常变化的页面生成静态页面,然后普通用户就可以直接访问这些静态页面而不用再访问需要连接数据库的动态页面。那么ASP.NET MVC3中如何做到这一点呢? 要解决这个问题,我们需要先了解ASP.NET应用程序的生命周期,先看下面作者整理的一张图片: 从图中我们可以清楚的看到:通用IIS访问应用程序时,每次的单个页面URL访问时,都会先经过HttpApplication 管线处理请求,走过BeginRequest 事件之后才会去走路由访问具体的Controller和Action,最后结束的时候会请求EndRequest事件。下面用一张图来表示这个顺序: 注意图中标示的红色部分就是我们要实现的部分,实现如下: 1 新建MyHandler.cs public class MyHandler:IHttpModule { public void Init(HttpApplication application) { application.BeginRequest += (new EventHandler(this.Application_BeginRequest)); application.EndRequest += (new EventHandler(this.Application_EndRequest)); } private void Application_BeginRequest(Object source, EventArgs e) { // Create HttpApplication and HttpContext objects to access // request and response properties. HttpApplication application [...]
[转载]ASP.NET MVC3的伪静态实现 – wxj200589 – 博客园. 最近使用ASP.NET MVC3开发B2C电子商务系统,为了SEO的优化工作,需要通过路由实现伪静态URL,后续再根据需要生成真正的静态页面,不直接走路由访问具体的页面。现在开始研究第一步,如何定义自己的路由规则,达到伪静态的功能需求。 基本实现原理如下图: 首先,关于命名空间。 路由的功能是为了让所有ASP.NET网站开发都可以使用,所以dll并没有在MVC中,而是在System.Web中的System.web.Routing。 现在我们为了我们实际的需求,实现MVC3中的自定义路由功能(继承RouteBase,重写RouteData和VirtualPathData)。 下面的例子实现以下目的:输入一个youdomin.com/product/123.html,执行TestController中Index. 第一步:实现TestRoute类 1 RouteData 每次访问URL都会从此入口 通过httpContext.Request.AppRelativeCurrentExecutionFilePath 获取我们访问的url地址,根据地址进行分析:是不是符合我们的规则,符合我们规则我们就走特定的Controller和Action。代码如下: public class TestRoute:RouteBase { private string[] urls; public TestRoute(params string[]targetUrls) { urls = targetUrls; } public override RouteData GetRouteData(HttpContextBase httpContext) { RouteData result = null; string requestedURL = httpContext.Request.AppRelativeCurrentExecutionFilePath+httpContext.Request.PathInfo; requestedURL = requestedURL.Substring(2).Trim(‘/‘); if (requestedURL.Contains(urls.ToArray().GetValue(0).ToString())) { result = new RouteData(this, new MvcRouteHandler()); result.Values.Add(“controller“, “Test“); result.Values.Add(“action“, “Index“); result.Values.Add(“p“, requestedURL); } return result; [...]
[转载][翻译]ASP.NET MVC 3 开发的20个秘诀(十二)[20 Recipes for Programming MVC 3]:缩放图片尺寸创建缩略图 – O2DS – 博客园. 议题 用户上传到网站上的大多数的图片都是大尺寸的照片,通常在用户想看完整图片之前网站会展示出这些图片或照片的缩略图。 解决方案 使用以下的类来调整上传的图片文件的宽和高:FileStream,Image,Bitmap和Graphics。 讨论 在下面的示例中,将修改和重组之前创建的FileUpload类。创建一个新的称为“ResizeImage”的方法来调整图片大小。调整之后的图 片文件将被保存到源文件存储文件夹的子文件夹“Thumbnails”中。同时也要修改DeleteFile方法,添加同时删除原始图像和缩略图,并且为 了避免重复代码要创建一个新的删除功能的方法。下面显示变化部分的类代码: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.IO; using System.Drawing; using System.Drawing.Drawing2D; namespace MVCApplication4.Utils { public static class FileUpload { public static char DirSeparator = System.IO.Path.DirectorySeparatorChar; public static string FilesPath = “Content” [...]

