2015-10-05 29 views
2

我正在使用南希在Mac上的项目,我正在编辑我的项目使用标准的文本编辑器(Atom)。我想使用Razor View Engine,并试图弄清楚如何。使用Razor查看引擎与南希,.cshtml不是可用的扩展

我包括

  • 在依赖Nancy.Viewengines.Razor": "1.3.0"我 project.json文件

  • using Nancy.ViewEngines.Razor;HomeModule.cs 文件

  • @inherits Nancy.ViewEngines.Razor.NancyRazorViewBase<nancytest.Objects.Task> 处的顶部顶部查看我想使用剃须刀 (012)),其中有.cshtml

延伸但是当我加载了这个项目,我得到的错误:

Nancy.RequestExecutionException: Oh noes! ---> Nancy.ViewEngines.ViewNotFoundException: Unable to locate view 'task_added.cshtml' Currently available view engine extensions: sshtml,html,htm```

还有什么我应该包括它承认.cshtml ?

回答

3

得到它的工作!不幸的是,视图引擎建立在不能在Mac上运行的代码上。该解决方案仅适用于Windows。

我将下面的代码添加到我的配置文件(Startup.cs),翻译自Razor Engine Wiki

public class RazorConfig : IRazorConfiguration 
{ 
    public IEnumerable<string> GetAssemblyNames() 
    { 
     return null; 
    } 

    public IEnumerable<string> GetDefaultNamespaces() 
    { 
     return null; 
    } 

    public bool AutoIncludeModelNamespace 
    { 
     get { return false; } 
    } 
} 

在每个视图顶部的行@inherits Nancy.ViewEngines.Razor.NancyRazorViewBase<nancytest.Objects.Task>也是不必要的。

1

你看过:Razor Engine WikiView location conventions

您是否有机会在Bootcamp或Windows机器上测试您的代码以查看它是否与Mac相关?据推测,你在Mono上运行,因为它在Mac上,同样你有任何其他项目/教程在Mac上运行?

你能提供你有/没有尝试过的更多细节吗?您是否有教程示例工作?

在猜测,我会说你的视图文件(.cshtml)不是南希正在寻找他们的地方。你的文件夹结构是什么?

编辑

对不起,我又看了一遍,显然南希没有拿起剃刀引擎(因为它明确地这样说)。您不需要HomeModule中的using语句,在那里没有引用。

您是否已经仔细检查了Nancy的项目参考并检查了它已被复制到bin文件夹中?

启用诊断程序(Diags)并查看'信息'面板中'已加载视图引擎' - 这将确认哪些视图引擎已加载,但它无疑会说同样的事情。

鉴于Nancy通过扫描引用nancy并自动注册IViewEngine类型的任何dll的加载appdomain和private bin目录来自动查找引擎,它强烈建议Razor程序集不在bin文件夹中,或类似的东西。

+0

我能够得到南希工作,只是没有用剃刀。我可以找到所有的教程使用VS,没有使用DNX。 该应用程序适用于使用Nancy的视图引擎,但我需要使用Razor。 我用Windows使用DNX将它加载到虚拟机中,并且出现同样的错误。根路径设置正确,它在正确的位置查找(root/Views/task_added.cshtml),但错误消息没有列出.cshtml作为可用的视图引擎扩展,这使我认为它有一些事情要做以及如何安装Razor。 在我的文章中的3行是我所做的包括剃刀。 – jmk22

+0

我对DNX并不熟悉,但看着它,或许与Nancy搜索程序集的方式以及DNX如何呈现这些程序集有冲突。 – nicodemus13

0

我有同样的问题。我在顶层货架windows服务上使用Nancy自己的主机。我的问题是我只有一个核心应用程序的参考,但没有参考我的Windows服务项目中的Nancy.ViewEngines.Razor.dll。

要解决它,我加入了Nancy.ViewEngines.Razor.dll refence我WindowsService项目