es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Componente de vista de Kentico 13 Xperience que muestra los datos del campo Tipo de página.

Si tuviera un tipo de página llamado “MySite.TextBox” y tuviera dos campos: “Título” y “Contenido”, ¿qué se requeriría para hacer un componente de vista que extraiga todos los tipos de página del sitio buscando desde “/” y buscando hacia abajo para que aparezca como una lista de elementos en cualquier vista, incluida la vista de diseño, usando algo como “” en una vista, como el _layout?

¿Qué archivos necesitaría crear aparte del componente de vista TextBoxList?

Sé que necesitaré crear un archivo de código generado para el tipo de página MySite.TextBox. Pero es donde establezco y establezco las reglas para generar la lista que las cosas se vuelven confusas.

Por ejemplo, si quisiera establecer reglas como:

var textBoxList = DocumentHelper.GetDocuments(“MySite.TextBox”).TopN(5).Path(“/”, PathTypeEnum.Children).OrderByAscending(“Title”).ToList();

¿Eso sería parte del componente de vista o de otra cosa?

Me encantaría tener un ejemplo. Odio que los sitios Dancing Goat y Medio Clinic no tengan uno.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para crear un componente de vista que extraiga todos los tipos de página del sitio buscando desde “/” y mirando hacia abajo para que aparezcan como una lista de elementos en cualquier vista, incluida la vista de diseño, utilizando algo como “” en una vista, como “_layout”, necesitarías crear los siguientes archivos:

    1. TextBoxList.cs: Esta sería la clase para el componente de vista que extrae todos los tipos de página del sitio buscando desde “/” y mirando hacia abajo para que aparezcan como una lista de elementos en cualquier vista. Esta clase heredaría de ViewComponent y estaría decorada con ViewComponentAttribute para que pueda ser referenciada en vistas utilizando el prefijo de etiqueta “vc”.
    2. TextBoxList.cshtml: Esta sería la vista Razor para el componente de vista que renderiza la lista de cuadros de texto. En esta vista, utilizarías la directiva @model para especificar el tipo de modelo que representa una lista de cuadros de texto.

    3. TextBoxViewModel.cs: Esta sería la clase de modelo para el cuadro de texto. Esta clase tendría propiedades para los campos de título y contenido del tipo de página MySite.TextBox.

    4. MySite.TextBox.cs: Este sería el archivo de código generado para el tipo de página MySite.TextBox. Este archivo se colocaría en la carpeta App_Code/Generated y contendría la clase necesaria para que el tipo de página se pueda usar en el componente de vista.

    En cuanto a las reglas para mostrar la lista, en la clase TextBoxList, podrías usar la API de Kentico para consultar la base de datos en busca de todas las instancias del tipo de página MySite.TextBox y ordenarlas según sea necesario. La regla de ejemplo que proporcionaste se podría usar en la clase de la siguiente manera:

    public async Task<iviewcomponentresult> InvokeAsync()
    {
        var textBoxList = await DocumentHelper.GetDocuments("MySite.TextBox")
            .TopN(5)
            .Path("/", PathTypeEnum.Children)
            .OrderByAscending("Title")
            .ToListAsync();
    
        var viewModelList = textBoxList
            .Select(tb => new TextBoxViewModel
            {
                Title = tb.GetValue("Title"),
                Content = tb.GetValue("Content")
            })
            .ToList();
    
        return View(viewModelList);
    }
    

    Este código consulta la base de datos de Kentico para obtener los 5 principales páginas del tipo MySite.TextBox que son hijos del nodo raíz, ordenados por el valor de su campo de título. Luego, mapea las páginas resultantes a una lista de objetos TextBoxViewModel, que se pasan a la vista para su representación.

    ¡Espero que esto sea de ayuda! Avísame si tienes alguna otra pregunta o necesitas más aclaraciones.

Comments are closed.