2

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

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

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

向同事们致敬

4

2 回答 2

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 模块

<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

你应该看到

“测试”

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

于 2010-06-18T08:25:39.900 回答
1

我想您可以将控制器类放在 App_Code 中并完成它。您需要为 Monorail url 映射一个特殊的扩展名。如果您不使用 SOAP Web 服务 (.asmx),则将此扩展映射到 Monorail 的 HttpHandlerFactory。

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

我建议您使用我上面列出的提示,看看它会带给您什么。分享您看到的异常情况,希望我们能尽快查明真相

于 2010-06-17T20:36:23.333 回答