首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >抛出'RazorEngine.Templating.TemplateCompilationException‘模板C#异常: RazorEngine.dll中的Razor

抛出'RazorEngine.Templating.TemplateCompilationException‘模板C#异常: RazorEngine.dll中的Razor
EN

Stack Overflow用户
提问于 2016-03-10 09:26:52
回答 1查看 1.1K关注 0票数 0

我正在尝试使用剃刀引擎在我的C#项目中创建一个模板。模板应该由我从数据库中获得的值填充。该模板如下所示

代码语言:javascript
复制
<table>
    <tr>
        <td>  Tier : </td>  
        <td> @Model.tier</td>
    </tr>

    <tr>
        <td>  Author : </td>
        <td> @Model.author</td>
    </tr>

    <tr>
        <td>  Quotation For : </td>
        <td> @Model.quotationFor</td>
    </tr>
</table>

后端代码如下所示

代码语言:javascript
复制
 var model = new List<KeyValuePair<string, object>>();
 for (int i=0;i<value.Count;i++) {
      model.Add(new KeyValuePair<string, object>(name[i], value[i]));
 }
 var template = File.ReadAllText(HttpContext.Current.Server.MapPath("Templates/dataDump.html"));
 var body = Razor.Parse(template, model);

模型列表由我从DB获取的值组成。我想使用此模型填充模板,但得到以下错误

代码语言:javascript
复制
Exception thrown: 'RazorEngine.Templating.TemplateCompilationException' in RazorEngine.dll
EN

回答 1

Stack Overflow用户

发布于 2016-03-10 10:29:15

看起来您正在尝试传递一个非常复杂的模型,而您在模板中没有很好地定义该模型

应该是这样的。

代码语言:javascript
复制
  var body =  Razor.Parse(template, new {tier = "tier", author="author",quotationFor=".quotationFor"});

如果你想让它像你展示的那样动态化

代码语言:javascript
复制
var model = new List<KeyValuePair<string, object>>();

您必须修改模板

代码语言:javascript
复制
<table>

@foreach(var item in Model)
{
    <tr>
        <td>@item.Key </td>  
        <td>@item.Value</td>
    </tr>
}
</table>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35905946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档