Copied to clipboard

Flag this post as spam?

This post will be reported to the moderators as potential spam to be looked at


  • dominik 711 posts 733 karma points
    Jul 17, 2012 @ 13:52
    dominik
    0

    Razor script example

    Is there any razor script example (cshtml) how i can loop through the items? 

    Thanks

  • Tim 68 posts 91 karma points
    Mar 25, 2013 @ 02:02
    Tim
    0

    I'm sure I'm not the only one who needed this. Ok so I've spent a considerable amount of time trying to work this out, and here it is

    Example XML of my repeatable custom content

    <items>

    <item>

    <data alias="bannerImage">1053</data>

    <data alias="bannerTitle">My Title 1</data>

    </item>

    <item>

    <data alias="bannerImage">1054</data>

    <data alias="bannerTitle">My Title 2</data>

    </item>

    </items>

    Razor script to see my repeatable custom content called homepageBanner

    var xml = @Library.ToDynamicXml(@Model.GetPropertyValue("homepageBanner"));
    @xml

     Razor scripting to output bannerTitle

    @using System
    @using System.Xml.Linq;
    @using System.Linq
    @using System.Collections.Generic
    @using umbraco.MacroEngines
    @inherits umbraco.MacroEngines.DynamicNodeContext
    @{
           var xml = Library.ToDynamicXml(@Model.GetPropertyValue("homepageBanner"));
    
        foreach(XElement item in xml.BaseElement.Elements("item")) {    
            foreach(XElement data in item.Elements("data"))
            {
                 if (data.Attribute("alias").Value == "bannerTitle")
                 {
                  @data.Value
                 }
            }   
                
    } }

    Output:

    My Title 1
    My Title 2

    It's not very elegant but it works :) To be honest it's far easier to do it xslt but I wanted to have everything in Razor.

  • Andy 10 posts 31 karma points
    May 09, 2013 @ 22:50
    Andy
    0

    @Tim: worked great for me! Thanks!

  • Marc-Anthony Taylor 55 posts 68 karma points
    Jul 11, 2013 @ 09:35
    Marc-Anthony Taylor
    0

    Hi! Anyone have an idea how to do this in Umbraco v6 in an MVC project?

  • Marc-Anthony Taylor 55 posts 68 karma points
    Jul 12, 2013 @ 12:23
    Marc-Anthony Taylor
    0

    Ok, I worked out a solution that works with v6.

        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.LoadXml(milestoneIds.Value.ToString());
        XmlNodeList nodes = xmlDoc.GetElementsByTagName("item");

    and then:

    foreach (XmlNode xNode in (from XmlNode dataNode in nodes select dataNode.SelectNodes("data") into n where n != null from XmlNode a in n select xNode).Where(inText => !String.IsNullOrEmpty(inText.InnerText)))
    { // code here }
  • Yadwinder singh 43 posts 112 karma points
    Jul 18, 2013 @ 08:23
    Yadwinder singh
    0

    Hi! Anyone have an idea how to do this in umbaco v6 using Razor view?

     

    <html><div class"row"> <div class="span4 carshow"></div>
    <div class="span4 carshow"></div>
    <div class="span4 carshow"></div></div><div class="row"> <div class="span4 carshow"></div>
    <div class="span4 carshow"></div>
    <div class="span4 carshow"></div>
    </div></html>
  • Lars-Erik Aabech 350 posts 1102 karma points MVP 8x c-trib
    Jul 18, 2013 @ 09:17
    Lars-Erik Aabech
    0

    @Tims example should work with only small changes in both 4.0 and 6.0 MVC views.

    Just add @using System.Linq.Xml to the top of the view.

    Instead of

    var xml =Library.ToDynamicXml(@Model.GetPropertyValue("homepageBanner"));

    you can do

    var doc = XDocument.Parse(Model.Content.GetPropertyValue("homepageBanner"));
    // or
    var doc = XDocument.Parse(CurrentPage.homepageBanner.ToString());

    foreach(var item in doc.Elements("item") { ... }
  • This forum is in read-only mode while we transition to the new forum.

    You can continue this topic on the new forum by tapping the "Continue discussion" link below.

Please Sign in or register to post replies