代码之家  ›  专栏  ›  技术社区  ›  remi bourgarel

Asp.NET网站中的Castle Monorail?

  •  2
  • remi bourgarel  · 技术社区  · 16 年前

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

    -使用城堡单轨 -我们的代码必须在网站上(我的负责人是一种老式的网站开发人员,所以他更喜欢有一些“.cs”文件,而不是一个“.dll”)。 -我们必须保留现有的webforms代码

    所以,如果你有一个教程或者类似的东西(我找到了很多关于asp.NETMVC和CastleMonorail的教程,但是我确实找到了一些关于asp.NET2.0的教程)/

    2 回复  |  直到 16 年前
        1
  •  2
  •   remi bourgarel    16 年前

    1/从web.config获取所需的元素: -配置节处理程序

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

    “应用程序代码”是网站程序集的名称。

    -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" />
    

    <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.NVelocityTemplateEngine.dll

    Castle.Components.Validator.dll

    Castle.MonoRail.Framework.dll

    Castle.MonoRail.Framework.Views.NVelocity.dll

    Castle.MonoRail.ViewComponents.dll

    3/在应用程序代码文件夹中添加类(例如TestMonorailController):

    public class TestMonorailController : SmartDispatcherController
    {
        public TestMonorailController()
        {
    
        }
        public void OnePage()
        {
            PropertyBag["toto"] = "TEST";
        }
    }
    

    5/在刚刚创建的文件夹中添加TestMonorail文件夹 6/在此文件夹中添加文件名“OnePage.vm”:

    $toto
    

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

    你应该看看

    等等:)我可以编辑我的产品代码。泰克斯肯

        2
  •  1
  •   Ken Egozi    16 年前

    您需要为单轨URL映射一个特殊的扩展名。 如果您不使用soapwebservices(.asmx),那么将此扩展映射到Monorail的HttpHandlerFactory。

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

    我建议你按照上面列出的提示来玩,看看它能给你带来什么。分享你看到的例外情况,希望我们很快就能弄清真相

    推荐文章