如何使用RazorEngine遍历视图中的列表?

时间:2016-09-15 13:21:00

标签: c# razorengine

我正在使用RazorEngine在WebApi项目中呈现视图。我有以下代码来遍历项目列表:

@using System.Collections.Generic;

@using MyApp;

@Model IEnumerable<Customer>

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

然而,我得到一个例外:

  

无法将类型'RazorEngine.Compilation.RazorDynamicObject'隐式转换为'System.Collections.IEnumerable'。存在显式转换(您是否错过了演员?)

使用RazorEngine迭代列表的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

更改

@Model IEnumerable<Customer>

@model IEnumerable<Customer>

区分大小写,在声明模型类型时应使用小写。然后你应该能够正确地迭代你的模型。

另外,您应该将item.Name更改为@item.Name,因为您指的是一个变量而不只是想要一个文字字符串。

我用RazorEngine 3.9.0创建了一个MCVE,以验证它对我有效。

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; }
    }
}