sintaxis que mvc español ejemplos c# asp.net-mvc asp.net-mvc-3 razor

c# - que - Función recursiva ASP.NET MVC 3 Razor



razor if (2)

Creo que es mejor crear un ayudante de HTML para esto. Algo como esto:

public static string ShowSubItems(this HtmlHelper helper, MyObject _object) { StringBuilder output = new StringBuilder(); if(_object.ListOfObjects.Count > 0) { output.Append("<ul>"); foreach(MyObject subItem in _object.listOfObjects) { output.Append("<li>"); output.Append(_object.Title); output.Append(html.ShowSubItems(subItem.listOfObjects); output.Append("</li>") } output.Append("</ul>"); } return output.ToString(); }

Entonces llámalo así:

@foreach(MyObject item in @Model.ListOfObjects){ <div> @item.Title </div> @html.ShowSubItems(item) }

De acuerdo, entonces quiero mostrar una lista que contenga listas de listas de listas ...

No tengo forma de saber cuántos niveles hay para mostrar, así que pensé que aquí es donde rompo la vieja rutina recursiva.

Sin embargo, estoy teniendo problemas con exactamente cómo hacerlo.

Esto es lo que tengo hasta ahora (a la vista, simplificado):

@foreach(MyObject item in @Model.ListOfObjects){ <div> @item.Title </div> //Call recursive function? }

Ahora cada uno de estos objetos también tiene una lista <MyObject>. Quiero mostrar cada nivel debajo de este div, con una sangría de pestaña por nivel, por ejemplo.

Estaba pensando que una función Razor sería lo que hay que hacer aquí, pero necesito ayuda para formarla. Aquí está mi pensamiento:

@functions{ public static void ShowSubItems(MyObject _object){ if(_object.ListOfObjects.Count>0){ foreach(MyObject subItem in _object.listOfObjects){ // Show subItem in HTML ShowSubItems(subItem); } } } }

Pero como pueden ver, simplemente necesito ayuda :)


El motor de visualización Razor permite escribir ayudantes recursivos en línea con la palabra clave @helper .

@helper ShowTree(IEnumerable<Foo> foos) { <ul> @foreach (var foo in foos) { <li> @foo.Title @if (foo.Children.Any()) { @ShowTree(foo.Children) } </li> } </ul> }