|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
J2EE比较成熟一点,一些比较出名的企业应用软件都是基于J2EE的。以后的发展就不好说了。不过java比较烦,学.net的话,微软把很多工具都封装好了,学起来可能容易一点。<p>这里我们将先容ASP.NET表达式树来构建mainRoute的URL,本文将利用相似于MvcFutures中界说的基于表达式树的帮助办法。
因为DomainRoute撑持针对URL域名的捕捉和机关,这有些损坏了ASP.NETRouting所制订的“协定”(ASP.NETRouting只撑持Path),因而在上一篇文章中,我们必要本人机关一个帮助办法来取得一个“包括域名”的URL。不外依据尽量强范例的准绳,我们应当利用的是相似于MvcFutures中界说的基于表达式树的帮助办法。因为MvcFutures已供应了十分充分的帮助功效,因而这实在其实不必要泯灭我们几价值。
我们编写了如许的ASP.NET表达式树帮助办法:
<OLclass=dp-xml>publicstaticstringActionEx(thisUrlHelperhelper,stringaction,objectrouteValues){varvalues=routeValues==null?newRouteValueDictionary():newRouteValueDictionary(routeValues);values.Add("action",action);values.Add("controller",helper.RequestContext.RouteData.Values["controller"]);returnhelper.GetRouteUrl(values);}privatestaticstringGetRouteUrl(thisUrlHelperhelper,RouteValueDictionaryvalues){varpathData=helper.RouteCollection.GetPath(helper.RequestContext,values);varurl=pathData.VirtualPath;returnIsAbsolute(url)?url:"/"+url;}
可是依据我们的必要,我们应当想法编写以下的代码:
<OLclass=dp-xml><ahref="c.Index())%>">Homea>
那末,这个ActionEx办法的署名应当是甚么样的呢?从一个办法的挪用体例上得出它的署名也是机关优秀API的需要才能。在这里,我们能够把ActionEx办法的署名定成:
<OLclass=dp-xml>publicstaticstringActionEx<TController>(thisUrlHelperhelper,Expression<Action<TController>>action)whereTController:Controller{returnActionEx(helper,action,null);}publicstaticstringActionEx<TController>(thisUrlHelperhelper,Expression<Action<TController>>action,objectrouteValues)whereTController:Controller{...}
与本来的ActionEx办法分歧,本来的ActionEx办法仅仅照顾了一个字符串,而如今的action是一个ASP.NET表达式树,个中包括了大批的信息:挪用哪一个Controller中的哪一个Action办法,并利用了哪些参数。比方,以下两种用法,终极天生的URL是不异的:
<OLclass=dp-xml><%=Url.ActionEx("List",new{controller="Post",id=5,area="blogs"})%><%=Url.ActionEx<PostController>(c=>c.List(5),new{area="blogs"})%>
如许,您应当就能够看出两种情形下,各类需要的数据是怎样传送出去的。因而,新增的ActionEx办法应当是如许:
<divclass="code"><OLclass=dp-xml>publicstaticstringActionEx<TController>(thisUrlHelperhelper,Expression<Action<TController>>action,objectrouteValues)whereTController:Controller{var<SPANclass=attribute><FONTcolor=#ff0000>如果需要重新编写代码,几乎任何一门计算机语言都可以跨平台了,还用得着Java嘛,而且像PHP/C#等语言不需要修改代码都可以跨Windows/Linux。 |
|