仓酷云

标题: ASP.NET网页编程之ASP.NET MVC虫篆之技 1-2 [打印本页]

作者: 老尸    时间: 2015-1-16 22:28
标题: ASP.NET网页编程之ASP.NET MVC虫篆之技 1-2
语言是不是不是最重要的?看到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
Servlet的形式和前面讲的CGI差不多,它是HTML代码和后台程序分开的。它们的启动原理也差不多,都是服务器接到客户端的请求后,进行应答。不同的是,CGI对每个客户请求都打开一个进程(Process)。
作者: 柔情似水    时间: 2015-1-25 19:06
主流网站开发语言之CGI:CGI就是公共网关接口(CommonGatewayInterface)的缩写。它是最早被用来建立动态网站的后台技术。这种技术可以使用各种语言来编写后台程序,例如C,C++,Java,Pascal等。
作者: admin    时间: 2015-2-3 14:09
在一个项目中谁敢保证每天几千万甚至几亿条的数据不丢失?谁敢保证应用的高可靠性?有可以借签的项目吗?
作者: 飘飘悠悠    时间: 2015-2-9 03:11
在一个项目中谁敢保证每天几千万甚至几亿条的数据不丢失?谁敢保证应用的高可靠性?有可以借签的项目吗?
作者: 第二个灵魂    时间: 2015-2-26 19:56
代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。
作者: 若相依    时间: 2015-3-8 17:18
现在主流的网站开发语言无外乎asp、php、asp.net、jsp等。
作者: 海妖    时间: 2015-3-16 07:56
ASP是把代码交给VBScript解释器或Jscript解释器来解释,当然速度没有编译过的程序快了。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2