每个孩子都加1(+1)Umbraco Razor

时间:2014-02-06 08:18:39

标签: razor

在下面的代码中,我需要在data-slide-index =“0”上为每个孩子添加(+1)。

从0开始,然后是1,2,3,4,5

它应该是这样的:

data-slide-index="0"
data-slide-index="1"
data-slide-index="2"

我在想这样的事情。

int theCount = 0;
theCount += 1; // Adds 1 to count

但我不知道如何在代码中正确使用它。

@foreach (var image in @Model.Children)
{
foreach (dynamic d in image.imageDampSingle)
{
<a data-slide-index="0" href="@DAMP_Helper.GetImageCropperUrl(d, "projectSingle")"><img src="@DAMP_Helper.GetImageCropperUrl(d, "projectSingleThumb")" title="@Model.captionText" alt="@d.Image.nodeName" /></a>

或者有更简单/另一种方法吗?

提前致谢!

//勒

2 个答案:

答案 0 :(得分:0)

Razor只是一个视图引擎,你在那里使用C#代码来做一些逻辑操作。递归方法是算法操作,它们能够在满足某个条件之前调用自身。在这种情况下,您可以使用帮助程序来实现这一点。您案例的一个例子:

@helper DoSomething(IEnumerable<Something> myList)
{
    foreach (var item in myList)
    { 
         @item.CertainProperty 
         @if (item.Children.Any())
         {
             @DoSomething(item.Children)
         }
    }
}

学习并阅读有关递归的信息,并会出现一个全新的基本概念世界。

http://en.wikipedia.org/wiki/Recursion_(computer_science) http://learnyousomeerlang.com/recursion

这是一个基本主题,当我读到这个主题时,我实际上正在编写一些代码片段,这是Python中的另一个例子:

def contaVogais(cadeia):
    if not cadeia:
        return 0
    return (1 if cadeia[0] in 'aeiou' else 0) + contaVogais(cadeia[1:])

正如您在示例中所看到的,递归解决方案通常更优雅,但在某些情况下可能会降低代码性能。

答案 1 :(得分:0)

我找到了解决方案。见下文:

                    @{
                var countNum = -1;
                }
                @foreach (var image in @Model.Children)
                {
                    {
                    countNum += 1;
                    }
                    foreach (dynamic d in image.imageDampSingle)
                    {
                        <a data-slide-index="@countNum" href="@DAMP_Helper.GetImageCropperUrl(d, "projectSingle")"><img src="@DAMP_Helper.GetImageCropperUrl(d, "projectSingleThumb")" title="@Model.captionText" alt="@d.Image.nodeName" /></a>
                    }
                }

欢迎您就改进代码发表意见。

//勒