具體步驟如下:
1、修改web.config檔案,在monorail節中加入以下定義
MonoRail學習筆記五:定制服務實作自定義功能 <services>
MonoRail學習筆記五:定制服務實作自定義功能 <service id="UrlTokenizer" type="TestSiteNVelocity.CustomUrlTokenizer, TestSiteNVelocity" />
MonoRail學習筆記五:定制服務實作自定義功能 </services>
2、編寫自己的CustomUrlTokenizer類
這裡為了友善,我直接複制預設的Castle.MonoRail.Framework.Services.DefaultUrlTokenizer類,将複制好的類放入TestSiteNVelocity,改名為CustomUrlTokenizer,然後在此基礎上修改。
原方法:
MonoRail學習筆記五:定制服務實作自定義功能 private void ExtractAreaControllerAction(string rawUrl, out string area, out string controller, out string action)
MonoRail學習筆記五:定制服務實作自定義功能 {
MonoRail學習筆記五:定制服務實作自定義功能 string[] parts = rawUrl.Split('/');
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能 if (parts.Length < 2)
MonoRail學習筆記五:定制服務實作自定義功能 {
MonoRail學習筆記五:定制服務實作自定義功能 throw new UrlTokenizerException("Url smaller than 2 tokens");
MonoRail學習筆記五:定制服務實作自定義功能 }
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能 action = parts[parts.Length - 1];
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能 int fileNameIndex = action.IndexOf('.');
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能 if (fileNameIndex != -1)
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能 action = action.Substring(0, fileNameIndex);
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能 controller = parts[parts.Length - 2];
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能 area = string.Empty;
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能 if (parts.Length - 3 == 0)
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能 area = parts[parts.Length - 3];
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能 else if (parts.Length - 3 > 0)
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能 StringBuilder areaSB = new StringBuilder();
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能 for(int i = 0; i <= parts.Length - 3; i++)
MonoRail學習筆記五:定制服務實作自定義功能 {
MonoRail學習筆記五:定制服務實作自定義功能 if (parts[i] != null && parts[i].Length > 0)
MonoRail學習筆記五:定制服務實作自定義功能 {
MonoRail學習筆記五:定制服務實作自定義功能 areaSB.Append(parts[i]).Append('/');
MonoRail學習筆記五:定制服務實作自定義功能 }
MonoRail學習筆記五:定制服務實作自定義功能 }
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能 if (areaSB.Length > 0)
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能 areaSB.Length -= 1;
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能 area = areaSB.ToString();
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能 }
修改後的方法:
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能 controller = "servlet"; ;
MonoRail學習筆記五:定制服務實作自定義功能 area = "";
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能 return;
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能
MonoRail學習筆記五:定制服務實作自定義功能 紅色标示的為修改部分
接下來就可以按正常方式編寫ServletController類和view部分
當然我們也同樣可以定義
[DefaultAction("Index")]
public class ServletController : Controller
這篇文章隻是涉及了自定義服務的很小的一個點,我們還可以自定義:
ControllerFactory
ViewComponentFactory
ResourceFactory
EmailSender
EmailTemplateService
UrlBuilder
ValidatorRegistry
等很多服務,來實作特定效果
本文轉自永春部落格園部落格,原文連結:http://www.cnblogs.com/firstyi/archive/2007/10/22/932768.html,如需轉載請自行聯系原作者