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「nullインデクサー」を使用して内部の要素にアクセスし、Model.Book.StaffContact[null]それを反復処理できるようになりました。

foreach各アイテムには、プロパティなどContactを使用してFirstName属性にアクセスできる場所がありますFirstName

于 2012-05-29T20:40:58.007 に答える