3

IEnumerable<string>在将类型模型发送到 NancyFX 中的 Razor 视图时,我得到了 YSOD 。如果提供一个字符串作为模型,并且@model在视图中带有相关语句,那么一切都会正常工作,因此可以正常工作。

错误是

无法通过 System.Collections.Generic.IEnumerable 的名称发现模型的 CLR 类型。确保传递给视图的模型可分配给视图中声明的模型。

我错过了什么?

查看.cshtml

@model System.Collections.Generic.IEnumerable<System.String>
<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
    <h1></h1>
    @foreach (var item in Model)
    {
        <h3>@item</h3>
    }
</body>
</html>

模块

public class MyModule: NancyModule
{
    public MyModule()
    {
        Get["/"] = parameters => View["View", this.GetModel()];
    }

    private IEnumerable<string> GetModel()
    {
        return new[] { "one", "two" };
    }
}
4

2 回答 2

6

问题似乎@model是南希不支持该指令。用正确的类型交换@modela可以解决问题:@inherits

@inherits Nancy.ViewEngines.Razor.NancyRazorViewBase<My.ViewModels.WhateverViewModel>
于 2012-10-17T13:35:21.850 回答
0

除了Greg B 的回答@model之外,尽管从Nancy Razor 视图引擎页面中并不清楚这一点,它仍然是 RazorEngine 中为 Nancy 保留的术语。

因此,您不能使用名称声明变量并使用例如model引用它;@model.Property视图引擎仍会尝试将其绑定到模型,即使这实际上不起作用(Razor View Engine 第 354 行)并且您将收到相同的错误。

于 2015-07-17T17:40:58.277 回答