仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 725|回复: 7
打印 上一主题 下一主题

[学习教程] ASP.NET网页编程之ASP.NET MVC虫篆之技 1-2

[复制链接]
老尸 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:28:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
语言是不是不是最重要的?看到AnyTao和TerryLee分享的关于ASP.NETMVC利用和优化的技能,难免手痒,也分享一下这一年多来ASP.NETMVC开辟的堆集。  个中一定是一些高效的技能,可是切实其实是能办理成绩,也一定有甚么深邃的道理,只是我以为值得分享。
  1.Controller来把持HTML的Title
  我想年夜部分伴侣都有在Controller内里指定Html页面Title的需求。
  我习气于先写利用的代码再往完美实在现,而指定一个Title最便利的情势莫过于:
1:publicActionResultIndex(intid){  
2:    vararticle=Db.GetArticle(id);//猎取数据库里的文章  
3:    Title=article.Name;  
4:    returnView();  
5:}  
  固然,这段代码是不克不及实行的,由于Controller并没有内建的Title属性,不外不妨,我们能够自界说一个: 
1:abstractpublicclassMyBaseController:Controller{  
2:       publicstringTitle{  
3:           set{  
4:               ViewData["Page_Title"]=value;  
5:           }  
6:       }  
7:} 

  然后将我们的Controller换为这个MyBaseController,以后在Master中写ViewData[“Page_Title”]的输入就行了。

1:<title><%=ViewData["Page_Title"]%></title>  
  OK,这个乐意完成了。
  固然做SEO的话Keyword和Description也能够如许来弄。
 2.ViewModel中传送Controller中界说的高低文
  老赵非常推ViewModel因而我也做了很多这方面的理论,发明切实其实不错。可是有个成绩,就是Controller中发生的高低文怎样传到View中往,好比说自界说的用户信息,等一些非static的范例,而我又不想到View中再实例化一遍。
  办理办法:ViewModel中另加一高低文属性(在我和程序中这些高低文承继于IContext接口,而在Controller中它的属性是CHContext)

1:publicclassHomeIndexViewModel{  
2:    publicIContextContext{get;set;}//这个属性就是办理它的办法  
3:    publicstringMessage{get;set;}  
4:} 

  而我在Controller中:  
1:publicActionResultIndex(){  
2:    HomeIndexViewModelmodel=newHomeIndexViewModel{  
3:        Context=CHContext,//这里传送  
4:        Message="WelcometoASP.NETMVC!"  
5:    };  
6:    returnView(model);  
7:} 

  而View中:

1:<%@PageLanguage="C#"MasterPageFile="~/Views/Shared/Site.Master"  
2:Inherits="System.Web.Mvc.ViewPage<HomeIndexViewModel>"%>  
3:<asp:ContentID="indexTitle"ContentPlaceHolderID="TitleContent"runat="server">  
4:    HomePage  
5:</asp:Content>  
6:<asp:ContentID="indexContent"ContentPlaceHolderID="MainContent"runat="server">  
7:    <h2><%=Html.Encode(Model.Message)%></h2>  
8:</asp:Content> 
  如许我们就能够完成将Controller中发生的自界说高低文传送了。不外每一个ViewModel都初始化一个IContext,不免太甚频仍,也累人,因而进一步改善,我们使用感化在Controller上的Filter,在Controller的基类我们自界说的MyBaseController中写以下Filter,而完成这个功效则要一切的ViewModel承继于一个类:MyBaseViewModel:
  MyBaseViewModel与Model:

1:publicclassMyBaseViewModel{  
2:    publicIContextContext{get;set;}  
3:}  
4:    
5:publicclassHomeIndexViewModel:MyBaseViewModel{  
6:    publicstringMessage{get;set;}  
7:}  
  Controller与Filter  
1:abstractpublicclassBaseController:Controller{  
2:    protectedoverridevoidOnResultExecuting(ResultExecutingContextfilterContext){  
3:        varm=ViewData.ModelasBaseViewModel;  
4:        if(m!=null){  
5:            m.Context=CHContext;//在这里初始化  
6:        }  
7:    }  
8:} 

  这回我们在Controller里利用时就清新了,不必再传送CHContext了

感觉很多控件都必须自己去写代码;用了WebMatrix感觉也不是很好,毕竟没有很强的WYSIWYG效果。现在就不知道如何是好了。
小魔女 该用户已被删除
沙发
发表于 2015-1-19 13:54:05 | 只看该作者
Servlet的形式和前面讲的CGI差不多,它是HTML代码和后台程序分开的。它们的启动原理也差不多,都是服务器接到客户端的请求后,进行应答。不同的是,CGI对每个客户请求都打开一个进程(Process)。
柔情似水 该用户已被删除
板凳
发表于 2015-1-25 19:06:43 | 只看该作者
主流网站开发语言之CGI:CGI就是公共网关接口(CommonGatewayInterface)的缩写。它是最早被用来建立动态网站的后台技术。这种技术可以使用各种语言来编写后台程序,例如C,C++,Java,Pascal等。
admin 该用户已被删除
地板
发表于 2015-2-3 14:09:42 | 只看该作者
在一个项目中谁敢保证每天几千万甚至几亿条的数据不丢失?谁敢保证应用的高可靠性?有可以借签的项目吗?
飘飘悠悠 该用户已被删除
5#
发表于 2015-2-9 03:11:04 | 只看该作者
在一个项目中谁敢保证每天几千万甚至几亿条的数据不丢失?谁敢保证应用的高可靠性?有可以借签的项目吗?
第二个灵魂 该用户已被删除
6#
发表于 2015-2-26 19:56:14 | 只看该作者
代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。
若相依 该用户已被删除
7#
发表于 2015-3-8 17:18:26 | 只看该作者
现在主流的网站开发语言无外乎asp、php、asp.net、jsp等。
海妖 该用户已被删除
8#
发表于 2015-3-16 07:56:30 | 只看该作者
ASP是把代码交给VBScript解释器或Jscript解释器来解释,当然速度没有编译过的程序快了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2025-1-4 02:36

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表