【问题标题】:Castle Monorail in Asp.NET web site?Asp.NET 网站中的Castle Monorail?
【发布时间】:2010-06-17 13:23:56
【问题描述】:

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

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

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

谢谢各位同学

【问题讨论】:

  • 您是指“网站”而不是“网络应用程序”吗?
  • 没错,就是你的代码在 App_Code 文件夹里,你把一个文件一个文件放到网上。

标签: asp.net castle-monorail


【解决方案1】:

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

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>

“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 :) 我可以编辑我的生产代码。谢谢肯

【讨论】:

    【解决方案2】:

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

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

    我建议您按照上面列出的提示进行操作,看看它对您有什么帮助。分享您看到的异常情况,希望我们能尽快查明真相

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      • 1970-01-01
      • 2010-09-22
      • 1970-01-01
      • 2011-03-19
      相关资源
      最近更新 更多