Ошибка Castle Monorail - MonoRail не удалось разрешить экземпляр механизма просмотра для шаблона 'Статьи \ Список'

Привет, я пытаюсь реализовать свое первое веб-приложение с помощью Castle Monorail.

Орех, я получаю следующую ошибку

MonoRail не смог разрешить экземпляр механизма просмотра для шаблона 'Статьи \ Список'

это мой контроллер

[Layout("Default"), Rescue("GeneralError")]
    public class ArticlesController : SmartDispatcherController
    {       
        public void List()
        {
            PropertyBag["articles"] = Article.FindAll();
        }
    }    

и мой взгляд

<h3>Articles list</h3>

<p>
<a href="new.castle">Create new Article</a>
</p>

<table width="100%" border="1" cellpadding="2" cellspacing="0">
<tr>
    <th>Id</th>
    <th>Name</th>
    <th>Content</th>   
</tr>
#foreach($article in $articles)
<tr>
    <td align="center">$article.Id</td>
    <td align="center">$article.Name</td>
    <td align="center">$article.Content</td>
    <td align="center">
        <a href="edit.castle?id=${article.Id}">Edit</a> | 
        <a href="delete.castle?id=${article.Id}">Delete</a>
    </td>
</tr>
#end
</table>

в global.asax у меня есть следующее

public void Application_OnStart()
        {
            RegisterRoutes(RoutingModuleEx.Engine);

            ActiveRecordStarter.Initialize(typeof(Article).Assembly, ActiveRecordSectionHandler.Instance);

            // If you want to let ActiveRecord create the schema for you:
            // ActiveRecordStarter.CreateSchema();


        }

        private static void RegisterRoutes(IRoutingRuleContainer rules)
        {
            rules.Add(new PatternRoute("root", "/")
                          .DefaultForController().Is("Home")
                          .DefaultForAction().Is("Index"));

            rules.Add(new PatternRoute("standard", "[controller]/[action]/[id]")
                          .DefaultForController().Is("Home")
                          .DefaultForAction().Is("Index"));

            rules.Add(new PatternRoute("articles", "[controller]/[action]/[id]")
                          .DefaultForController().Is("Articles")
                          .DefaultForAction().Is("List"));
        }


this is my web.config

<?xml version="1.0"?>
<configuration>
  <configSections>
    <section name="monorail" type="Castle.MonoRail.Framework.Configuration.MonoRailSectionHandler, Castle.MonoRail.Framework" />
    <section name="activerecord" type="Castle.ActiveRecord.Framework.Config.ActiveRecordSectionHandler, Castle.ActiveRecord" />
  </configSections>

  <activerecord isWeb="true">

    <config>
      <add
          key="connection.driver_class"
          value="NHibernate.Driver.SqlClientDriver" />
      <add
          key="dialect"
          value="NHibernate.Dialect.MsSql2008Dialect" />
      <add
          key="connection.provider"
          value="NHibernate.Connection.DriverConnectionProvider" />
      <add
          key="connection.connection_string"
          value="Data Source=.;Initial Catalog=GigaWebSolution;Integrated Security=SSPI" />
      <add
          key="proxyfactory.factory_class"
          value="NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle"  />
    </config>

  </activerecord>

  <monorail defaultUrlExtension="" useWindsorIntegration="true" smtpHost="localhost">
    <viewEngine viewPathRoot="Views" customEngine="Castle.MonoRail.Framework.Views.NVelocity.NVelocityViewEngine, Castle.MonoRail.Framework.Views.NVelocity" />

    <url useExtensions="false"/>

    <controllers>      
      <assembly>GigaWebSolutionMVC</assembly>
    </controllers>
  </monorail>

  <system.web>
    <compilation debug="true">
      <assemblies>
        <add assembly="*" />
      </assemblies>
    </compilation>

    <authentication mode="Windows"/>

    <customErrors mode="RemoteOnly" />

    <httpHandlers>
      <add verb="*" path="*.rails" type="Castle.MonoRail.Framework.MonoRailHttpHandlerFactory, Castle.MonoRail.Framework" />
      <add verb="*" path="*.vm" type="System.Web.HttpForbiddenHandler" />
    </httpHandlers>

    <httpModules>
      <add name="routing" type="Castle.MonoRail.Framework.Routing.RoutingModuleEx, Castle.MonoRail.Framework" />
    </httpModules>
  </system.web>

</configuration>

любое предложение?

Спасибо


person user446582    schedule 26.09.2010    source источник
comment
как вы инициализировали движок просмотра?   -  person Ken Egozi    schedule 26.09.2010
comment
какое расширение у вашего представления? а где он находится?   -  person Mauricio Scheffer    schedule 27.09.2010
comment
Где твой взгляд? т.е. каково его имя файла и где в дереве проекта он находится?   -  person Ken Egozi    schedule 27.09.2010
comment
А какую версию монорельса вы используете?   -  person Ken Egozi    schedule 27.09.2010


Ответы (1)


Какая у вас структура каталогов и где находятся ваши файлы просмотра?

Монорельс ищет ваш файл для просмотра по адресу:

{project root}\Views\Articles\List.vm

Кроме того, вам не нужно добавлять маршрут "статьи", так как "стандартный" маршрут будет достаточным. Если вы хотите определить действие по умолчанию для контроллера, используйте атрибут DefaultAction.

    public class ArticlesController : SmartDispatcherController
    {
        [DefaultAction]
        public void List()
        {
person Tim    schedule 27.09.2010