2012-10-12 2 views
3

IEnumerable<string> 유형의 모델을 NancyFX의 내 면도기 뷰로 보낼 때 YSOD가 표시됩니다. 보기에 관련 @model 문을 사용하여 문자열을 모델로 제공하면 모든 것이 잘 수행되므로 코드가 작동합니다.복잡한 형식을 NancyFX의 면도기 모델로 전달할 때 YSOD

오류는 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" }; 
    } 
} 

답변

6

문제는 낸시에서 지원되지 않는 @model 지시어 것 같다 모듈. 올바른 유형과 @inherits에 대한 @model를 교체하면 문제를 해결 addtion에서

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

Greg B's answer에, @model이이 Nancy Razor View Engine 페이지에서 명확하지 않다하더라도, 그럼에도 불구하고 낸시의 RazorEngine에 예약 된 용어입니다.

따라서 변수 이름을 model으로 선언 할 수없고 예를 들어 @model.Property으로 참조 할 수 없습니다. 비록 실제로 작동하지 않더라도 (Razor View Engine line 354) 뷰 엔진은 모델에 바인딩하려고 시도 할 것이고 동일한 오류가 발생할 것입니다.

관련 문제