【问题标题】:using RazorEngine to iterate the model使用 RazorEngine 迭代模型
【发布时间】:2012-05-29 19:28:49
【问题描述】:

我正在使用 ElasticObject (http://elasticobject.codeplex.com/) 创建动态对象,我将其提供给 RazorEngine 以进行模板替换。

ElasticObject 正在转换为动态对象的 XML 的结构是这样的:

<Book ChapterID="1123" ChapterName="Test Chapter" BookName="Sample Book" SectionName="Test Section">
    <StaffContact>
       <Contact FirstName="Jane" LastName="Doe" EmailAddress="janedoe@domain.com" />
       <Contact FirstName="John" LastName="Doe" EmailAddress="johndoe@domain.com" />
    </StaffContact>
</Book>

我正在尝试弄清楚如何获取 Contact.UserFirstName 等数据

XmlNode BookNode = xmlLookupDoc.SelectSingleNode("/Book");
var elBook = XElement.Parse(BookNode.OuterXml).ToElastic();

//I build the Model object here - this is a simplified version of what I'm using
var razorViewModel = new { Book = elBook };

我可以通过以下方式访问 Book 节点的属性:

@Model.Book.ChapterName

我只是不确定如何使用 RazorEngine 遍历模型。

我尝试了以下方法:

@foreach (var item in Model.StaffContact.Contact)
    {
        @item.model.UserFirstName @item.model.UserLastName at @item.model.UserEmailAddress 
    }

如果您能提供任何帮助,我们将不胜感激。

【问题讨论】:

  • 好的,你描述了你尝试了什么,但结果如何?输出是什么或有任何异常等?

标签: .net razor razorengine


【解决方案1】:

根据ElasticObject的文档(不算太多,主要是一些测试和一些博文),这样试试:

@foreach (var contact in Model.Book.StaffContact[null])
{
    @contact.FirstName @contact.LastName at @contact.EmailAddress
}

基本上,属性名称应该与 XML 元素和属性名称匹配,但是访问集合有点棘手:

您可以在“空索引器”Model.Book.StaffContact[null] 的帮助下访问 StaffContact 中的元素,现在您可以对其进行迭代。

foreach 中,每个项目都是Contact,您可以在其中使用FirstName 属性访问FirstName 属性,依此类推。

【讨论】:

  • 这对我不起作用。 The best overloaded method match for 'System.Collections.Generic.List&lt;object&gt;.this[int]' has some invalid arguments
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-05
  • 2021-03-06
  • 1970-01-01
  • 2018-05-06
  • 2021-12-09
  • 2017-03-26
  • 2015-10-24
相关资源
最近更新 更多