我的编程空间,编程开发者的网络收藏夹
学习永远不晚

ASP.NET MVC2框架有什么用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

ASP.NET MVC2框架有什么用

这篇文章主要介绍“ASP.NET MVC2框架有什么用”,在日常操作中,相信很多人在ASP.NET MVC2框架有什么用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”ASP.NET MVC2框架有什么用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

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 MvcHtmlString MemcacheHtmlRenderAction(this HtmlHelper htmlHelper, int duration, string actionName,string controllerName, RouteValueDictionary routeValues)   {   object obaear = htmlHelper.ViewContext.RouteData.DataTokens["area"];   string area = string.Empty;   if (obaear != null) area = obaear.ToString();   string key = string.Format("MemcacheHtmlRenderAction_{0}{1}{2}", area, controllerName,actionName);   object ob = DistCache.Get(key);    if (ob == null)    {    // htmlHelper.RenderAction(actionName, controllerName, routeValues);   StringWriter writer = new StringWriter(CultureInfo.CurrentCulture);    ActionHelper(htmlHelper, actionName, controllerName, routeValues, writer);   string wStr = writer.ToString();   DistCache.Add(key, wStr,TimeSpan.FromSeconds(duration));   MvcHtmlString mstr = MvcHtmlString.Create(wStr);   return mstr;    }   else { return MvcHtmlString.Create((string)ob); }   }

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

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

2.关于静态内容的放置

习惯上,静态内容会放在 mvc程序所在的目录下,比如说js,css,上传的图片等。但是这样的话,所有的静态请求都要经过 aspnet_isapi 处理,这样是非常不合算的。所以静态内容一般都会放在另外的子域上。http://www.86e0.com/t 是放在 cdn.86e0.com上。

3.关于强类型ViewModel

我基本上看了老赵的Asp.net MVC***实践。 其中有一点,就是强烈推荐使用强类型的ViewModel. 我试了一些页面,发现用强类型的ViewModel,现阶段并不适用于我。因为我是用NbearLite,从数据库抓出来的大多是DataTable. 我是觉得DataTable+NbearLite蛮方便的,虽然没有动态语言的数据访问来得方便,但是比用Entity,ViewModel, DTO,等等来说,还是可以省下很多代码。然后,最重要的是,由于我这种站经常会修改,所以数据库改变,加字段,减字段是很经常性的事。但是,用NbearLite + DataSet,DataTable,却非常方便。

所以我觉得,做Asp.net MVC,如果你不是用DDD,DDT的话,用DataTable还是可以的。因为DDD,DDT学习起来还是要点成本的。

4.关于URL生成

URL生成, 老赵写了一系列文章:

各种URL生成方式的性能对比

各种URL生成方式的性能对比(结论及分析)

为URL生成设计流畅接口(Fluent Interface)

URL生成方式性能优化结果

我直接选择

Raw方式了, 速度最快的,才是适合我的。呵。 而不是强类型的才是适合我的。

分享一个很实用的Asp.net MVC 分页Helper.

效果如下:

ASP.NET MVC2框架有什么用

请大家注意生成的 URL, 是用 ?参数=页码 的方式。代码如下:

/// <summary>   /// 分页Pager显示   /// </summary>   /// <param name="html"></param>   /// <param name="currentPageStr">标识当前页码的QueryStringKey</param>   /// <param name="pageSize">每页显示</param>   /// <param name="totalCount">总数据量</param>   /// <returns></returns>   public static string Pager(this HtmlHelper html, string currentPageStr, int pageSize, int totalCount)    {   var queryString = html.ViewContext.HttpContext.Request.QueryString;   int currentPage = 1; //当前页   if(!int.TryParse(queryString[currentPageStr], out currentPage)) currentPage = 1; //与相应的QueryString绑定    var totalPages = Math.Max((totalCount + pageSize - 1) / pageSize, 1); //总页数   var dict = new RouteValueDictionary(html.ViewContext.RouteData.Values);   var output = new StringBuilder();   foreach (string key in queryString.Keys)   if (queryString[key] != null && !string.IsNullOrEmpty(key))   dict[key] = queryString[key];   if (totalPages > 1)   {   if (currentPage != 1)   {//处理首页连接   dict[currentPageStr] = 1;   output.AppendFormat("<span class=\"p_home\">{0}</span>", html.RouteLink("首页", dict));    }    if (currentPage > 1)   {//处理上一页的连接   dict[currentPageStr] = currentPage - 1;   output.AppendFormat("<span class=\"p_up\">{0}</span>", html.RouteLink("上一页", dict));   }    else {    output.AppendFormat("<span class=\"p_disable\">{0}</span>","上一页");     }   int currint = 5;    for (int i = 0; i <= 10; i++)    {//一共最多显示10个页码,前面5个,后面5个   if ((currentPage + i - currint) >= 1 && (currentPage + i - currint) <= totalPages)    if (currint == i)   {//当前页处理    output.Append(string.Format("<span class=\"p_current\">{0}</span>", currentPage));    }    else   {//一般页处理   dict[currentPageStr] = currentPage + i - currint;   output.AppendFormat("<span class=\"p_num\">{0}</span>",html.RouteLink((currentPage + i - currint).ToString(), dict));      }      }    if (currentPage < totalPages)      {//处理下一页的链接       dict[currentPageStr] = currentPage + 1;        output.AppendFormat("<span class=\"p_down\">{0}</span>", html.RouteLink("下一页", dict));      }       else       {         output.AppendFormat("<span class=\"p_disable\">{0}</span>", "下一页");      }      if (currentPage != totalPages)       {      dict[currentPageStr] = totalPages;        output.AppendFormat("<span class=\"p_last\">{0}</span>",html.RouteLink("末页", dict));      }       }     output.AppendFormat("<span class=\"p_count\">第{0}页/共{1}页</span>", currentPage, totalPages);//这个统计加不加都行      return output.ToString();     }

ASP.NET MVC延伸阅读

ASP.NET MVC是微软官方提供的MVC模式编写ASP.NET Web应用程序的一个框架。

它由Castle的MonoRail而来.目前已经历经数个版本。ASP.NET MVC中的MVC本来是存在于Desktop程序中的,M是指数据模型,V是指用户界面,C则是控制器。使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如一批统计数据你可以分别用柱状图、饼图来表示。C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。

ASP.NET MVC2框架有什么用

ASP.NET MVC框架是既ASP.NET WebForms后的又一种开发方式。它提供了一系列优秀特性,使ASP.NET开发人员拥有了另一个选择。ASP.NET MVC框架选项非常干净,而且容易使用。它将允许你在应用中轻易地保持关注分离,且有助于进行干净的测试和TDD。

到此,关于“ASP.NET MVC2框架有什么用”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

ASP.NET MVC2框架有什么用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

ASP.NET MVC2框架有什么用

这篇文章主要介绍“ASP.NET MVC2框架有什么用”,在日常操作中,相信很多人在ASP.NET MVC2框架有什么用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”ASP.NET MVC2框架有什么用”的疑
2023-06-17

ASP.NET MVC2 RC2有什么新功能

本篇内容主要讲解“ASP.NET MVC2 RC2有什么新功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“ASP.NET MVC2 RC2有什么新功能”吧!从ASP.NET MVC 2 RC
2023-06-17

ASP.NET MVC框架的使用方法是什么

ASP.NET MVC框架的使用方法如下:1. 创建ASP.NET MVC项目:打开Visual Studio,选择“创建新项目”,然后选择“ASP.NET Web应用程序”模板,并选择“MVC”作为项目类型。2. 定义模型(Model):
2023-10-10

怎么用ASP.NET写服务框架

这篇文章主要介绍“怎么用ASP.NET写服务框架”,在日常操作中,相信很多人在怎么用ASP.NET写服务框架问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用ASP.NET写服务框架”的疑惑有所帮助!接下来
2023-06-17

ASP.NET MVC 2.0框架的原理是什么

ASP.NET MVC 2.0框架的原理是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。使用微软VS工具开发Web应用程序主要有两种方式:一种是常用的创建ASP.NET W
2023-06-17

Hibernate orm框架有什么用

本篇内容主要讲解“Hibernate orm框架有什么用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Hibernate orm框架有什么用”吧!Hibernate在解决性能问题方面做得非常好。
2023-06-17

xposed框架有什么作用

xposed框架的作用有功能扩展、主题定制、广告屏蔽、隐私保护、性能优化、功能定制等。详细介绍:1、功能扩展,通过安装各种xposed模块,用户可以实现对系统功能的扩展和增强;2、主题定制,用户可以通过xposed模块来实现自定义主题,让系
2023-08-09

java cxf框架有什么用

CXF(Apache CXF)是一个开源的、高性能的、易于使用的Java开发框架,用于构建和部署Web服务。它提供了一套简单的编程模型,可以轻松地创建和实现SOAP和RESTful风格的Web服务。CXF框架具有以下几个主要用途:1. 创建
2023-08-30

golang有什么框架

golang框架有:1、Gin,具有高性能和易用性的特点,提供了路由、中间件、JSON序列化、参数绑定等功能;2、Echo,提供了中间件和上下文对象,可以方便地实现自定义的处理逻辑;3、Beego,提供了路由、模板引擎、ORM、数据库迁移、
2023-07-25

php框架是什么及有什么用

今天小编给大家分享一下php框架是什么及有什么用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。php框架是一种可以在项目开发
2023-07-04

Asp.net core前端框架Blazor怎么使用

今天小编给大家分享一下Asp.net core前端框架Blazor怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、
2023-07-02

python中flask框架有什么用

本篇文章为大家展示了python中flask框架有什么用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、Flask蓝图目录我们之前写的Flask项目都是自己组织的目录结构,其实Flask官方有其推
2023-06-15

Java集合框架有什么用

这篇文章主要介绍Java集合框架有什么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Java集合框架集合概念:对象的容器,定义了对多个对象进行操作的常用方法。可实现数组的功能。集合和数组的区别:数组长度固定,集合长
2023-06-20

java并发框架有什么用

Java并发框架可以帮助开发者更方便地编写多线程程序,实现并发操作,提高程序的性能和效率。以下是一些Java并发框架的用途:1. Executor框架:提供了线程池的管理和任务调度的功能,可以避免手动创建和管理线程,降低线程创建和销毁的开销
2023-08-11

php中yii框架有什么用

这篇文章主要介绍php中yii框架有什么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!php是什么语言php,一个嵌套的缩写名称,是英文超级文本预处理语言(PHP:Hypertext Preprocessor)的缩
2023-06-14

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录