Press Ctrl / CMD + C to copy this to your clipboard.
This post will be reported to the moderators as potential spam to be looked at
I have a lot of forach loops runing inside of each other in one big file and I am looking to make the code a little be more managable but I can figure out how to get it to work here is a small portion of the code:
@using Umbraco.Web.Models@using Umbraco.Cms.Custom@using System.Text.RegularExpressions@inherits Umbraco.Web.Mvc.UmbracoTemplatePage@{ var Content = CurrentPage.HomeRepositories.First().PageItems; }@foreach (var item in Content){ var id = Regex.Replace(item.Name, @"([+|.|\'|\# |!|\(|?|,| |>|<|&|;|\)])", "", RegexOptions.IgnoreCase).ToLower();@foreach (var row in item.Children.Where("NodeTypeAlias == \"Row\"")){@{int count = row.Children.Count();int cols = 1;switch (count) {case 1:cols = 12;break;case 2:cols = 6;break;case 3:cols = 4;break;case 4:cols = 3;break;default:cols = 6;break;}}@foreach (var column in row.Children.Where("NodeTypeAlias == \"HeaderIcon\"")){ @{ var links = column.Links; if (links.Any()) { foreach (var link in links) { padtop-30} animated" data-animtype="fadeInDown" data-animrepeat="0" data-animdelay="0"> @if (column.HasValue("header")){@column.Header} @Html.Raw(column.BodyText) } } else { padtop-30} animated" data-animtype="fadeInDown" data-animrepeat="0" data-animdelay="0"> visible-md-block visible-lg-block}"> fa-4x}else{white}"> @if (column.HasValue("header")){@column.Header} @Html.Raw(column.BodyText) } }}@foreach (var column in row.Children.Where("NodeTypeAlias == \"HeaderSmallImage\"")) { @{ var links = column.Links; if (links.Any()) { foreach (var link in links) { @if (column.HasValue("header")){ @column.Header } @Html.Raw(column.BodyText) } } else { @if (column.HasValue("header")){ @column.Header } @Html.Raw(column.BodyText) } } }}}
What I want to do is have the inner foreaches inisde there own partial views ie having the following on its own.
@{ var links = column.Links; if (links.Any()) { foreach (var link in links) { @if (column.HasValue("header")){ @column.Header } @Html.Raw(column.BodyText) } } else { @if (column.HasValue("header")){ @column.Header } @Html.Raw(column.BodyText) } }
When I have tried using somehting like: @Html.Partial("Content/HeaderIcon", Model.Content)
it throws an error on the call to <div class="col-sm-@cols"> which is defined in the parent viewany suggestiongs will be welcome
Arg getting html to display on the forums is a pain :(
@using Umbraco.Web.Models@using Umbraco.Cms.Custom@using System.Text.RegularExpressions@inherits Umbraco.Web.Mvc.UmbracoTemplatePage@{ var Content = CurrentPage.HomeRepositories.First().PageItems;}
@foreach (var item in Content){ var id = Regex.Replace(item.Name, @"([+|.|\'|\# |!|\(|?|,| |>|<|&|;|\)])", "", RegexOptions.IgnoreCase).ToLower();
<section id="@id" class="page-section">
<div class="container">
@foreach (var row in item.Children.Where("NodeTypeAlias == \"Row\"")) { <div class="row"> @{ int count = row.Children.Count(); int cols = 1; switch (count) { case 1: cols = 12; break; case 2: cols = 6; break; case 3: cols = 4; break; case 4: cols = 3; break; default: cols = 6; break; } } @foreach (var column in row.Children.Where("NodeTypeAlias == \"HeaderSmallImage\"")) { <div class="col-sm-@cols"> @{ var links = column.Links; if (links.Any()) { foreach (var link in links) { <div class="row"> <div class="col-md-offset-1 col-md-10"> <div class="content-box content-box-small"> <a href="@link.Url" title="@link.Name" target="@link.Target"> @if (column.HasValue("header")){ <h4 class="animated" data-animtype="animated-scale" data-animrepeat="0" data-animdelay="0s"> <i class="@column.Icon display-icon"></i> @column.Header </h4> } </a> <div class="content-box-text animated" data-animtype="fadeInDown" data-animrepeat="0" data-animdelay="1s"> @Html.Raw(column.BodyText) </div> </div> </div> </div> } } else { <div class="row"> <div class="col-md-offset-1 col-md-10"> <div class="content-box content-box-small"> @if (column.HasValue("header")){ <h4 class="animated" data-animtype="animated-scale" data-animrepeat="0" data-animdelay="0s"> <i class="@column.Icon display-icon"></i> @column.Header </h4> } <div class="content-box-text animated" data-animtype="fadeInDown" data-animrepeat="0" data-animdelay="1s"> @Html.Raw(column.BodyText) </div> </div> </div> </div> } } </div> }
</div>
}
</section>
Hi William,
You can't init variable in parent view and than use it in the child, only Model is passed through the views.
THanks
is working on a reply...
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.
Continue discussion
Nesting partial views inside a loop
I have a lot of forach loops runing inside of each other in one big file and I am looking to make the code a little be more managable but I can figure out how to get it to work here is a small portion of the code:
What I want to do is have the inner foreaches inisde there own partial views ie having the following on its own.
When I have tried using somehting like:
@Html.Partial("Content/HeaderIcon", Model.Content)
it throws an error on the call to <div class="col-sm-@cols"> which is defined in the parent viewany suggestiongs will be welcome
Arg getting html to display on the forums is a pain :(
@using Umbraco.Web.Models
@using Umbraco.Cms.Custom
@using System.Text.RegularExpressions
@inherits Umbraco.Web.Mvc.UmbracoTemplatePage
@{
var Content = CurrentPage.HomeRepositories.First().PageItems;
}
@foreach (var item in Content)
{
var id = Regex.Replace(item.Name, @"([+|.|\'|\# |!|\(|?|,| |>|<|&|;|\)])", "", RegexOptions.IgnoreCase).ToLower();
<section id="@id" class="page-section">
<div class="container">
@foreach (var row in item.Children.Where("NodeTypeAlias == \"Row\""))
{
<div class="row">
@{
int count = row.Children.Count();
int cols = 1;
switch (count) {
case 1:
cols = 12;
break;
case 2:
cols = 6;
break;
case 3:
cols = 4;
break;
case 4:
cols = 3;
break;
default:
cols = 6;
break;
}
}
@foreach (var column in row.Children.Where("NodeTypeAlias == \"HeaderSmallImage\""))
{
<div class="col-sm-@cols">
@{
var links = column.Links;
if (links.Any())
{
foreach (var link in links)
{
<div class="row">
<div class="col-md-offset-1 col-md-10">
<div class="content-box content-box-small">
<a href="@link.Url" title="@link.Name" target="@link.Target">
@if (column.HasValue("header")){
<h4 class="animated" data-animtype="animated-scale" data-animrepeat="0" data-animdelay="0s">
<i class="@column.Icon display-icon"></i>
@column.Header
</h4>
}
</a>
<div class="content-box-text animated" data-animtype="fadeInDown" data-animrepeat="0" data-animdelay="1s">
@Html.Raw(column.BodyText)
</div>
</div>
</div>
</div>
}
}
else
{
<div class="row">
<div class="col-md-offset-1 col-md-10">
<div class="content-box content-box-small">
@if (column.HasValue("header")){
<h4 class="animated" data-animtype="animated-scale" data-animrepeat="0" data-animdelay="0s">
<i class="@column.Icon display-icon"></i>
@column.Header
</h4>
}
<div class="content-box-text animated" data-animtype="fadeInDown" data-animrepeat="0" data-animdelay="1s">
@Html.Raw(column.BodyText)
</div>
</div>
</div>
</div>
}
}
</div>
}
</div>
}
</div>
</section>
}
Hi William,
You can't init variable in parent view and than use it in the child, only Model is passed through the views.
THanks
is working on a reply...
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.