在翻譯過程中,發現官網給出的不少代碼都是錯誤的。我在文章中都會給予注釋或者直接修改為正確的,因此內容與原文會有出入,希望大家能夠理解。
我們建議大家使用下列項目結構做為常規約定:
下面的章節將告訴您怎樣手工或使用MonoRail Project Wizard 建立這種結構
使用MonoRail project wizard
如果你已經使用MSI安裝程式安裝了Castle Project,那你可能連Visval StudioIntegration Environment也安裝好了。如果是這樣的話,請使用嚮導建立一個新的MonoRail項目。
注意
Visual Studio 2005 使用者必須下載安裝 Web Project support for Visual Studio,否則嚮導將無法工作。
開啟Visual Studio並執行建立項目,選擇Castle MonoRail Project:
輸入 GettingStartedSample 做為項目名稱
嚮導開始,選擇NVelocity視圖引擎並單擊Next
檢查建立測試專案的各個選項並單擊 Finish。該嚮導將為你建立解決方案和專案檔並配置好所有資訊。這可能需要花上一些時間。
此時你應該有一個項目準備運行
繼續 你的第一個控制器和視圖。
在Visual Studio裏手工建立項目
如果你沒有安裝VSIntegration Environment或者不想使用工程嚮導,你可以手工建立項目結構。
在Visual Studio裡建立一個ASP.Net 項目 ( 如果你的Visual Studio沒有安裝ASP.Net項目支援程式,那麼你可以選擇建立一個類庫項目).
添加引用下列程式集:
- Castle.MonoRail.Framework.dll: The MonoRail framework
- Castle.MonoRail.Framework.Views.NVelocity.dll: The view engine we are going to use
- Castle.Components.Validator.dll: Our lightweight validation infrastructure
- Castle.Components.Binder.dll: The binder implementation
- Castle.Components.Common.EmailSender.dll: The email service contracts
- Castle.Components.Common.EmailSender.SmtpEmailSender.dll: The email service implementation
- Castle.Core.dll: Core functionalities shared by projects
- NVelocity.dll: The template engine
在項目裡建立下列檔案夾。再次說明一下,這隻是一項常規約定,我們建議你照著做。但在你熟悉使用架構以後,你可以構想一個更適合你項目的結構。
最後配置web.config檔案。你必須註冊http handler,http module以及MonoRail配置節點:
添加 MonoRail 配置節點:
<configuration>
<configSections>
<section
name="monorail"
type="Castle.MonoRail.Framework.Configuration.MonoRailSectionHandler,
Castle.MonoRail.Framework" />
</configSections>
<monorail>
<controllers>
<assembly>GettingStartedSample</assembly>
</controllers>
<viewEngine viewPathRoot="Views">
<add type="Castle.MonoRail.Framework.Views.NVelocity.NVelocityViewEngine,
Castle.MonoRail.Framework.Views.NVelocity" />
</viewEngine>
</monorail>
注意:以上是官網的配置,實際上這樣是無法正常工作的,需要給viewEngine增加一個屬性改成這樣.
<viewEngine
viewPathRoot="Views"
customEngine="Castle.MonoRail.Framework.Views.NVelocity.NVelocityViewEngine,
Castle.MonoRail.Framework.Views.NVelocity" />
為了能夠使用像castle或rails這樣的副檔名,還需要註冊一下http handler:
<system.web>
<httpHandlers>
<add
verb="*"
path="*.castle"
type="Castle.MonoRail.Framework.MonoRailHttpHandlerFactory,
Castle.MonoRail.Framework" />
</httpHandlers>
</system.web>
</configuration>
最後註冊http module:
<system.web>
<httpHandlers>
<add
verb="*"
path="*.castle"
type="Castle.MonoRail.Framework.MonoRailHttpHandlerFactory,
Castle.MonoRail.Framework" />
</httpHandlers>
<httpModules>
<add
name="monorail"
type="Castle.MonoRail.Framework.EngineContextModule,
Castle.MonoRail.Framework" />
</httpModules>
</system.web>
</configuration>
繼續 你的第一個控制器和視圖。