控件中国网现已改版,您看到的是老版本网站的镜像,系统正在为您跳转到新网站首页,请稍候.......
中国最专业的商业控件资讯网产品咨询电话:023-67870900 023-67871946
产品咨询EMAIL:SALES@COMPONENTCN.COM

ASP.NET MVC 2框架试用经验谈(1)

作者:佚名 出处:互联网 2010年03月26日 阅读:

本文将为大家介绍已经发布的ASP.NET MVC 2框架正式版的使用情况,包括缓存,静态内容的放置等等。希望本文能对大家有所帮助。

  这个月一直在用 ASP.NET MVC 2 做http://www.86e0.com/t 这个网站,用的时候是 aps.net MVC2 RC2,然后现在ASP.NET MVC 2正式版已经是发布了。 在MVC的使用上,有一些心得。下面作一下总结,希望对大家有用,也欢迎大家讨论。

  1.关于缓存

  缓存上,数据层上的缓存是必须的,这点不必多说了。

  另一个很重要的是:视图片段缓存。

  我参考了老赵的写的三篇关于片段缓存的文章:

  适合ASP.NET MVC的视图片断缓存方式(上):起步

  适合ASP.NET MVC的视图片断缓存方式(中):更实用的API

  适合ASP.NET MVC的视图片断缓存方式(下):页面输出原则

  本想用老赵的了,但是我发现ASP.NET MVC 2 的有一个新功能: Html.Partial可以返回生成的HTML, 返回的类型是:MvcHtmlString. 虽然要利用Partial View才能生成Html片段,但是我想这个已经够我用的了, 所以我做了一个这样一个Helper,主要是将生成的HTML片段缓存到Memcached里。代码如下:


public static class MvcHtmlHelper    
{    
public static MvcHtmlString MemcacheHtmlPartial(this HtmlHelper htmlHelper,int duration, string partialViewName, object model, ViewDataDictionary viewData)    
{    
object obaear = htmlHelper.ViewContext.RouteData.DataTokens["area"];    
string area=string.Empty;    
if (obaear != null) area = obaear.ToString();    
string key = string.Format("MemcacheHtmlPartial_{0}{1}", area, partialViewName);    
object ob = DistCache.Get(key);    
if (ob == null)    
{    
 MvcHtmlString mstr = htmlHelper.Partial(partialViewName, model, viewData);    
 DistCache.Add(key, mstr.ToString(), TimeSpan.FromSeconds(duration));    
return mstr;    
}    
else  
{    
 return MvcHtmlString.Create((string)ob);    
}    
 }    


  然后,我觉得,这样,在每次请求时,还是要在Controller 里把数据取出来,然后再传到 Partial View里。 既然已经缓存了,就应该不用每次请求都要在Controller里把数据取出来才对!虽然数据层会有缓存。

  所以我,能不能再省下去Controller取数据的消耗,于是又有了以下代码,其功能是:缓存Action生成的HTML到Memcached里。


public static class MvcHtmlHelper    
{    
public static MvcHtmlString MemcacheHtmlPartial(this HtmlHelper htmlHelper,int duration, string partialViewName, object model, ViewDataDictionary viewData)    
{    
object obaear = htmlHelper.ViewContext.RouteData.DataTokens["area"];    
string area=string.Empty;    
if (obaear != null) area = obaear.ToString();    
string key = string.Format("MemcacheHtmlPartial_{0}{1}", area, partialViewName);    
object ob = DistCache.Get(key);    
if (ob == null)    
{    
 MvcHtmlString mstr = htmlHelper.Partial(partialViewName, model, viewData);    
 DistCache.Add(key, mstr.ToString(), TimeSpan.FromSeconds(duration));    
return mstr;    
}    
else  
{    
 return MvcHtmlString.Create((string)ob);    
}    
 }    


  说明一下,Actionhelper的方法是在MVC原代码里提取出来的。 因为MVC2里的 Html.RenderAction方法并没有返回 MvcHtmlString的重载版。那位有更好的方法?

  其实,MVC里的Action有输出缓存,所以直接在View里用 Html.RenderAction都可以解决很多问题了。这个主要是可以用程序管理缓存。

控件中国网www.componentcn.com提示:未完待续

热推产品

  • ActiveReport... 强大的.NET报表设计、浏览、打印、转换控件,可以同时用于WindowsForms谀坔攀戀Forms平台下......
  • AnyChart AnyChart使你可以创建出绚丽的交互式的Flash和HTML5的图表和仪表控件。可以用于仪表盘的创......
首页 | 新闻中心 | 产品中心 | 技术文档 | 友情连接 | 关于磐岩 | 技术支持中心 | 联系我们 | 帮助中心 Copyright-2006 ComponentCN.com all rights reserved.重庆磐岩科技有限公司(控件中国网) 版权所有 电话:023 - 67870900 传真:023 - 67870270 产品咨询:sales@componentcn.com 渝ICP备12000264号 法律顾问:元炳律师事务所 重庆市江北区塔坪36号维丰创意绿苑A座28-5 邮编:400020
在线客服
在线客服系统
在线客服
在线客服系统