1

我正在使用 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 
    }

您可以提供的任何帮助将不胜感激。

4

1 回答 1

0

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

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

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

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

foreach每个项目中Contact,您都可以使用属性访问 FirstName 属性FirstName等。

于 2012-05-29T20:40:58.007 回答