NancyFx - Razor编译错误

时间:2014-02-19 10:18:20

标签: 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 <---

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

这可能是什么问题?

1 个答案:

答案 0 :(得分:8)

编辑:原始问题已通过将配置放在正确的.config文件中解决,以备将来参考,在此处添加您还可以实现自己的IRazorConfiguration,Nancy会自动选择up,这意味着你根本不需要任何.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; }
    }
}

原始答案:

我实际上并不知道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>

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

应该解决问题。