YSOD传递复杂类型为NancyFX剃刀模型时(YSOD when passing complex

2019-09-24 02:00发布

发送类型的模型时,我得到一个YSOD IEnumerable<string>在NancyFX我Razor视图。 那么,如果提供一个字符串作为模型,用相关的一切工作@model视图中的语句,因此工作。

错误的是

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

有什么我错过了?

View.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" };
    }
}

Answer 1:

这个问题似乎是@model指令在南希不支持。 如果更换@model一个@inherits正确类型修复该问题:

@inherits Nancy.ViewEngines.Razor.NancyRazorViewBase<My.ViewModels.WhateverViewModel>


Answer 2:

在addtion到格雷格B的回答 , @model仍然是在RazorEngine对南希的保留期限,即使这是不是从明确南希Razor视图引擎页面。

所以,你不能声明一个变量名为model ,并参考其@model.Property例如; 视图引擎仍然会尝试将其绑定到模型中,即使不实际工作( Razor视图引擎线354 ),你会得到同样的错误。



文章来源: YSOD when passing complex type as razor model in NancyFX
标签: razor nancy