Check mulitple node levels for doc type and do common routine in Razor
Hi All,
I am wondering if it is possible to move thru a node and its children using razor and perform a common routine, whether a specific task or validation (and whether this can be achieved using a helper) rather than having the same code repeating at each level.
Figured it out, thought I'd post my solution in case its helpful
@inherits umbraco.MacroEngines.DynamicNodeContext
------ define helper which has common routine, note using dynamic so I can get property values from item -----------------
@helper ValidationRoutine(dynamic item) { if(@item.NodeTypeAlias=="somedoctype"){ ----- do validation } }
------- create process to loop though all nodes in parent for x number of levels
@foreach(var c in @Model.Children) { dynamic _Folder = Model.NodeById(c.Id); @foreach (var itemL1 in _Folder.Children) { @ValidationRoutine(@itemL1) ----- this part calls the helper
{ dynamic _FolderL2 = Library.NodeById(@itemL1.Id); @foreach (var itemL2 in _FolderL2.Children) { @ValidationRoutine(@itemL2) ----- this part calls the helper
Check mulitple node levels for doc type and do common routine in Razor
Hi All,
I am wondering if it is possible to move thru a node and its children using razor and perform a common routine, whether a specific task or validation (and whether this can be achieved using a helper) rather than having the same code repeating at each level.
For example:
Node1
------ Node 1-1
------ Node 1-1-1
***************************************************
For each (var c in @Model.Children)
Dynamic Node1 =Model.NodeById(c.id);
@foreach (var N1 in Node1.Children)
if(@N1.NodeTypeAlias = "DATA"
check N1.Data field 1
check N1.Data field 2 .....
display result ........
Dynamic Node1-1 =Model.NodeById(Node1.id);
@foreach (var N1-1 in Node1-1.Children)
if(@N1-1.NodeTypeAlias = "DATA"
check N1-1.Data field 1
check N1-1.Data field 2 .....
display result ........
Dynamic Node1-1-1 =Model.NodeById(Node1-1.id);
@foreach (var N1-1-1 in Node1-1-1.Children)
if(@N1-1-1.NodeTypeAlias = "DATA"
check N1-1-1.Data field 1
check N1-1-1.Data field 2 .....
display result ........
So is it possible to wrap up the common part below for each level I go thru
if(@N1.NodeTypeAlias = "DATA"
check N1.Data field 1
check N1.Data field 2 .....
display result ........
Any thoughts would be appreciated.
Cheers
Hi All,
Does anyone have an idea or example on how to setup a reusable routine in razor?
Cheers
Hi All,
Figured it out, thought I'd post my solution in case its helpful
@inherits umbraco.MacroEngines.DynamicNodeContext
------ define helper which has common routine, note using dynamic so I can get property values from item -----------------
@helper ValidationRoutine(dynamic item) {
if(@item.NodeTypeAlias=="somedoctype"){
----- do validation
}
}
------- create process to loop though all nodes in parent for x number of levels
@foreach(var c in @Model.Children)
{
dynamic _Folder = Model.NodeById(c.Id);
@foreach (var itemL1 in _Folder.Children)
{
@ValidationRoutine(@itemL1) ----- this part calls the helper
{
dynamic _FolderL2 = Library.NodeById(@itemL1.Id);
@foreach (var itemL2 in _FolderL2.Children)
{
@ValidationRoutine(@itemL2) ----- this part calls the helper
.... etc ...etc
is working on a reply...