在Asp.NET网站上的Castle Monorail?

时间:2010-06-17 13:23:57

标签: asp.net castle-monorail

在我们的系统中,大部分代码都在asp.net(2.0)网站上,几个月前我发现了Castle Monorail,我觉得它比asp.net / webforms更容易使用。

这是我们需要的: - 使用Castle Monorail - 我们的代码必须在网站上(我的主管是一种老式的网络开发人员,所以他更喜欢有一些“.cs”文件,而不是一个“.dll”)。 - 我们必须保留现有的webforms代码

所以也许你有一个教程或类似的东西(我发现了很多关于asp.net MVC和城堡单轨的教程,但我确实找到了asp.net 2.0)

Merci les collegues

2 个答案:

答案 0 :(得分:2)

所以这很简单(15分钟):

1 /从web.config获取所需的元素: - config section handler

<section name="monorail" type="Castle.MonoRail.Framework.Configuration.MonoRailSectionHandler, Castle.MonoRail.Framework" />

- 配置本身

  <monorail>
    <controllers>
      <assembly>App_Code</assembly>
      <assembly>Castle.Monorail.ViewComponents</assembly>

    </controllers>
    <viewEngines viewPathRoot="Views">
      <add type="Castle.MonoRail.Framework.Views.NVelocity.NVelocityViewEngine, Castle.MonoRail.Framework.Views.NVelocity" />
    </viewEngines>
  </monorail>

“App_Code”是网站程序集的名称。

-http处理程序

<add verb="*" path="*.rails" type="Castle.MonoRail.Framework.MonoRailHttpHandlerFactory, Castle.MonoRail.Framework" />
      <!--block direct user access to template files-->
      <add verb="*" path="*.vm" type="System.Web.HttpForbiddenHandler" />
      <add verb="*" path="*.boo" type="System.Web.HttpForbiddenHandler" />
      <add verb="*" path="*.st" type="System.Web.HttpForbiddenHandler" />

-http modules

<add name="monorail" type="Castle.MonoRail.Framework.EngineContextModule, Castle.MonoRail.Framework" />

2 /取你需要的dll,在我的情况下(我不使用activerecord):

Castle.Components.Binder.dll

Castle.Components.Common.EmailSender.dll

Castle.Components.Common.TemplateEngine.dll

Castle.Components.Common.TemplateEngine.NVelocityTemplateEngine.dll

Castle.Components.Validator.dll

Castle.Core.dll

Castle.MonoRail.Framework.dll

Castle.MonoRail.Framework.Views.NVelocity.dll

Castle.MonoRail.ViewComponents.dll

3 /在App_Code文件夹中添加一个类(例如TestMonorailController):

使用Castle.MonoRail.Framework;

public class TestMonorailController : SmartDispatcherController
{
    public TestMonorailController()
    {

    }
    public void OnePage()
    {
        PropertyBag["toto"] = "TEST";
    }
}

4 /在您网站的根目录中添加一个Views文件夹 5 /在刚刚创建的文件夹中添加TestMonorail文件夹 6 /在此文件夹中添加文件名“OnePage.vm”:

$toto

7 /测试您的网站:

http://localhost:XX/YourWebSite/TestMonorail/OnePage.rails

你应该看到

“TEST”

Et voila :)我可以编辑我的生产代码。谢克斯

答案 1 :(得分:1)

我猜你可以将控制器类放在App_Code中并完成它。 你需要为Monorail网址映射一个特殊的扩展名。 如果您不使用SOAP webservices(.asmx),那么将此扩展名映射到Monorail的HttpHandlerFactory。

一个有趣的罪魁祸首可能是包含App_code文件的实际程序集没有一个好名字(我认为),MonoRail确实需要知道从中找到控制器类的程序集。

我建议你玩上面列出的提示,看看它能带给你什么。分享你看到的例外情况,希望我们能尽快找到它的底部