我正在使用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
迭代列表的正确方法是什么?
答案 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; }
}
}