NancyFx - Razor编译错误

Acr*_*gma 2 c# asp.net-mvc razor nancy owin

编译视图时出错

Error compiling template: views/devices.cshtml

Errors:
    [CS0234] Line: 3 Column: 27 - The type or namespace name 'Services' does 
    not exist in the namespace 'Rioxo.Companion' 
    (are you missing an assembly reference?)

Details:
@using System
@using System.Collections.Generic
@using Rioxo.Companion.Services <---
Run Code Online (Sandbox Code Playgroud)

web.config中

<razor disableAutoIncludeModelNamespace="false">
    <assemblies>
        <add assembly="Server32" />
        <add assembly="Rioxo.Companion.Services" />
    </assemblies>
    <namespaces>
        <add namespace="Rioxo.Companion.Server" />
        <add namespace="Rioxo.Companion.Services" />
    </namespaces>
</razor>
Run Code Online (Sandbox Code Playgroud)

这可能是什么问题?

Phi*_*ill 8

编辑:原始问题通过将配置放在正确的.config文件中解决,以备将来参考,在这里添加你也可以实现你自己的IRazorConfigurationNancy将自动获取,这意味着你根本不需要任何.config注册.

例:

public class RazorConfig : IRazorConfiguration
{
    public IEnumerable<string> GetAssemblyNames()
    {
        yield return "MyWebsite.Web";
        yield return "MyWebsite.Models";
        yield return "Sandra.SimpleValidator";
        yield return "ServiceStack.Text";
    }

    public IEnumerable<string> GetDefaultNamespaces()
    {
        yield return "Nancy.Validation";
        yield return "System.Globalization";
        yield return "System.Collections.Generic";
        yield return "System.Linq";
        yield return "MyWebsite.Web";
        yield return "MyWebsite.Models";
        yield return "MyWebsite.Web.ViewModels";
        yield return "MyWebsite.Web.Helpers.RazorHelpers";
    }

    public bool AutoIncludeModelNamespace
    {
        get { return true; }
    }
}
Run Code Online (Sandbox Code Playgroud)

原答案:

我实际上并不知道它是什么Rioxo,他们的网站似乎没有下载.

所以我在这里拍摄并假设它,因为你没有正确引用它的名称.

我认为名字可能是Rioxo.CompanionRioxo

因此,将该<assemblies>部分更新为:

<razor disableAutoIncludeModelNamespace="false">
    <assemblies>
        <add assembly="Server32" />
        <add assembly="Rioxo" />
    </assemblies>
    <namespaces>
        <add namespace="Rioxo.Companion.Server" />
        <add namespace="Rioxo.Companion.Services" />
    </namespaces>
</razor>
Run Code Online (Sandbox Code Playgroud)

要么

<razor disableAutoIncludeModelNamespace="false">
    <assemblies>
        <add assembly="Server32" />
        <add assembly="Rioxo.Companion" />
    </assemblies>
    <namespaces>
        <add namespace="Rioxo.Companion.Server" />
        <add namespace="Rioxo.Companion.Services" />
    </namespaces>
</razor>
Run Code Online (Sandbox Code Playgroud)

应该解决这个问题.