2016-09-15 4 views
1

WebApi 프로젝트 내에서 뷰를 렌더링하는 데 RazorEngine을 사용하고 있습니다.RazorEngine을 사용하여보기에서 목록을 반복하는 방법은 무엇입니까?

암시은 System.Collections '에 유형'RazorEngine.Compilation.RazorDynamicObject을 '변환 할 수 없습니다 :

@using System.Collections.Generic; 

@using MyApp; 

@Model IEnumerable<Customer> 

@foreach (var item in Model) 
{ 
    <tr> 
     <td> 
      item.Name 
     </td> 
    </tr> 
} 

는 그러나, 나는 예외를 얻을 : 나는 항목의 목록을 반복 할 수있는 다음과 같은 코드가 있습니다. IEnumerable '입니다. 명시 적 변환이 존재합니다. 캐스트를 놓치셨습니까?

RazorEngine을 사용하여 목록을 반복하는 올바른 방법은 무엇입니까? 모델 유형을 선언 할 때

+2

선언 된 모델 유형은 무엇입니까? 귀하의 질문에 전혀 관련이없는 것처럼 웹 API로 태그를 붙인 이유는 무엇입니까? – mason

+0

@mason 이것을 반영하기 위해 내 질문을 편집했습니다. –

+4

'@ Model' 지시자가 소문자 여야하지 않습니까? – kiziu

답변

1

변경

@Model IEnumerable<Customer> 

그것은 경우 민감한
@model IEnumerable<Customer> 

, 당신은 소문자를 사용해야합니다. 그런 다음 모델을 올바르게 반복 할 수 있어야합니다.

또한 변수를 참조하고 리터럴 문자열 만 필요하기 때문에 item.Name@item.Name으로 변경해야합니다.

저는 MCF가 RazorEngine 3.9.0으로 만들어져 그것이 저에게 효과가 있었는지 확인했습니다.

using System; 
using System.Collections.Generic; 
using RazorEngine; 

namespace MyApp 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      var template = @" 
@using System.Collections.Generic; 
@using MyApp; 
@model IEnumerable<Customer> 

@foreach (var item in Model) 
{ 
    <tr> 
     <td> 
      @item.Name 
     </td> 
    </tr> 
} 
"; 

      var result = Razor.Parse(template, new List<Customer> 
         { new Customer { Name = "Hello World" } }); 
      Console.WriteLine(result); 
      Console.WriteLine("Press any key to exit."); 
      Console.ReadKey(); 
     } 
    } 

    public class Customer 
    { 
     public string Name { get; set; } 
    } 
} 
+0

'@model'을 사용하면 다음과 같은 결과가 나옵니다.'model' 이름이 현재 컨텍스트에 존재하지 않습니다. –

+0

@ Ivan-MarkDebono 그것은 나를 위해 일했습니다. 제 대답을 편집 한 예를보십시오. – mason

+0

@ Ivan-MarkDebono, 어떤 버전의'RazorEngine'을 사용하고 있습니까? – kiziu

관련 문제