Copied to clipboard

Flag this post as spam?

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


  • Lewis 36 posts 116 karma points
    Sep 05, 2013 @ 10:03
    Lewis
    0

    C# error when using .Where() on CurrentModel.Children

    Hi all.

    In a line like this in a razor file:

    var myVar = CurrentModel.Children.Where(x => x.GetPropertyValue("myProperty") == "myValue");

    I get the following errors:

    The type arguments for method 'umbraco.MacroEngines.DynamicNodeList.Where<T>(string, params object[])' cannot be inferred from the usage. Try specifying the type arguments explicitly.

    and

    One or more types required to compile a dynamic expression cannot be found. Are you missing references to Microsoft.CSharp.dll and System.Core.dll

    I don't get any intellisense for x in the lamda expression. 

    This only happens in the presentation project, in the website project I get intellisense and no errors are thrown.

    It builds every other time, and when it does the code runs as expected.

    I am not missing references to the dlls mentioned above I have tried cleaning and rebuilding, I have tried deleting the temporary .NET files (which actually solved the problem for a short while) but now the errors are back and I am out of ideas.

    If anyone has any ideas as to why this could be happening please share, it would be greatly appreciated!

    Thanks,
    Lewis


  • Lewis 36 posts 116 karma points
    Sep 05, 2013 @ 10:04
    Lewis
    0

    Should have mentioned, using Umbraco 6.1.5

  • Jeavon Leopold 3074 posts 13632 karma points MVP 11x admin c-trib
    Sep 05, 2013 @ 10:14
    Jeavon Leopold
    0

    Hi Lewis,

    Could you please post your entire script, especially the definition of CurrentModel?

    Thanks,

    Jeavon

  • Lewis 36 posts 116 karma points
    Sep 05, 2013 @ 10:21
    Lewis
    0

    @using umbraco.MacroEngines

    @inherits umbraco.MacroEngines.DynamicNodeContext

    @{  

        <ul>

        @foreach (DynamicNode n in CurrentModel.AncestorsOrSelf().Where(x => x.GetPropertyValue("umbracoNaviHide") != "1"))

        {

            if(CurrentModel.Id != n.Id)

            {

                <li><a href="@n.Url">@n.Name</a></li>

                continue;

            }

            <li>n.Name</li>

        }

        </ul>

    }

  • Peter Gregory 408 posts 1614 karma points MVP 3x admin c-trib
    Sep 05, 2013 @ 10:26
    Peter Gregory
    0

    Because you cant write linq against a dynamic.

    Im assuming that this is a Razor scripting file and not a Partial?

    Your query should be

    var myVar = Model.Children.Where("myProperty" == \"myValue\"");

    or use something like uQuery or Node.

  • Peter Gregory 408 posts 1614 karma points MVP 3x admin c-trib
    Sep 05, 2013 @ 10:28
    Peter Gregory
    0

    Edit on that last one.

    var myVar = Model.Children.Where("myProperty == \"myValue\"");

    One too many quotes.

  • Lewis 36 posts 116 karma points
    Sep 05, 2013 @ 10:30
    Lewis
    0

    The thing is I'm not using Model I am using CurrentModel, which is of type DynamicNode.

  • Jeavon Leopold 3074 posts 13632 karma points MVP 11x admin c-trib
    Sep 05, 2013 @ 10:33
    Jeavon Leopold
    0

    Where are you getting CurrentModel from?

  • Lewis 36 posts 116 karma points
    Sep 05, 2013 @ 10:37
    Lewis
    0

    By inheriting DynamicNodeContext.

  • Peter Gregory 408 posts 1614 karma points MVP 3x admin c-trib
    Sep 05, 2013 @ 10:40
    Peter Gregory
    1

    Yep Sorry I missed that you were using CurrentModel and not Model. Jeavon CurrentModel is kinda equivalent to Node.

    This works for me.

    @inherits umbraco.MacroEngines.DynamicNodeContext
    
    
    @{
        var col = CurrentModel.Children.Where(x=> x.GetPropertyValue("something") == "test");
    }
    
    @foreach(var item in col){
        <p>@item.GetPropertyValue("something")</p>
    }
    
  • Jeavon Leopold 3074 posts 13632 karma points MVP 11x admin c-trib
    Sep 05, 2013 @ 10:50
    Jeavon Leopold
    0

    Peter, just found it, I never knew that existed! All this time I have done new DynamicNode(Model.Id) and could have just used CurrentModel! Never mind, have moved onto Mvc now :-)

    Lewis, any reason you are using Razor Macro rather than Mvc?

  • Lewis 36 posts 116 karma points
    Sep 05, 2013 @ 10:53
    Lewis
    0

    No particular reason, but we are too far into the build on this project to make the switch.

  • Jeavon Leopold 3074 posts 13632 karma points MVP 11x admin c-trib
    Sep 05, 2013 @ 10:58
    Jeavon Leopold
    0

    Cool, you can always use a "Partial View Macro" within your MasterPages if you would like to make use of the new PublishedContent rather than the legacy DynamicNode :-)

  • Lewis 36 posts 116 karma points
    Sep 05, 2013 @ 12:50
    Lewis
    0

    Thanks for the suggestion, it may be something we look into doing. However the original issue still remains a mystery. Why does the code work in one project but not another? Anyone have any ideas?

  • Lewis 36 posts 116 karma points
    Sep 06, 2013 @ 14:14
    Lewis
    0

    Peter - the code works for me in other projects, just not this one.

  • 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