3

タイプのモデルをIEnumerable<string>NancyFX の Razor ビューに送信すると、YSOD が発生します。@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" };
    }
}
4

2 に答える 2

6

問題は、@modelディレクティブがナンシーでサポートされていないことのようです。を正しいタイプに交換@modelする@inheritsと、問題が修正されます。

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

Greg B's answerに加えて、これはNancy Razor View Engineページ@modelからは明らかではありませんが、それでも Nancy の RazorEngine の予約語です。

そのため、その名前で変数を宣言して、たとえばmodelそれを参照することはできません。@model.Propertyビュー エンジンは、それが実際に機能しない場合でもモデルにバインドしようとし ( Razor View Engine 行 354 )、同じエラーが発生します。

于 2015-07-17T17:40:58.277 に答える