Los bloques de marcado en línea no se pueden anidar. Solo se permite un nivel de marcado en línea. Maquinilla de afeitar MVC

Yo una ventana modal con cuadrícula telerik dentro. Pero necesito renderizar imágenes en mi cuadrícula, por lo que entiendo que no puedo usar @ dos veces. Aquí hay una publicación de blog sobre este tema Enlace

¿Puede alguien ayudarme por favor?

Mi código

@{  Html.Telerik().Window()
    .Name("images")
    .Title("Select an Image")
    .Content(@<text>

@(Html.Telerik().ComboBox()
            .Name("AjaxComboBox66")
            .AutoFill(true)
            .SelectedIndex(0)
            .BindTo(new SelectList(Model.PhotoFolders, "ID", "Name"))
            .Filterable(filtering => filtering.FilterMode(AutoCompleteFilterMode.StartsWith))
            .HighlightFirstMatch(true)
            .ClientEvents(events => events
                .OnChange("onChange")
            )
      )

      @(Html.Telerik().Grid<AjaxImages>()
    .Name("Grid")
    .DataKeys(keys => keys.Add(c => c.ID))
  .Columns(columns =>
  {
      columns.Template(
          @<text>
               <img src='@item.Url' /> 
//Here is my error. I need helper function
           </text>

).Title("Picture");

  })

                              .DataBinding(dataBinding => dataBinding.Ajax().Select("GetImages", "UserProducts"))

                      .Scrollable(scrolling => scrolling.Enabled(true))
                      .Sortable(sorting => sorting.Enabled(true))
                          .Pageable(paging => paging.Enabled(true).PageSize(20).Total(100).Style(GridPagerStyles.NextPreviousAndNumeric))
                      .Filterable(filtering => filtering.Enabled(true))
                      .Groupable(grouping => grouping.Enabled(false))
                      .EnableCustomBinding(true)

                      .Footer(true))
              </text>)
    .Width(400)
    .Draggable(true)
    .Modal(true)
    .Visible(false)


    .Render();
} 

Mi función GetImages me devuelve json con "ID" y "URL".

preguntado el 21 de mayo de 12 a las 12:05

2 Respuestas

En estas situaciones, se puede usar la función auxiliar de MVC Razor. Cree la función auxiliar con la definición de control de cuadrícula, en este caso RenderGrid().

@helper RenderGrid()
{
     @(Html.Telerik().Grid<AjaxImages>()
     .Name("Grid")
     .DataKeys(keys => keys.Add(c => c.ID))
     .Columns(columns =>
     {
         columns.Template(
         @<text>
             <img src='@item.Url' /> 
         </text>
         ).Title("Picture");
     })
     .DataBinding(dataBinding => dataBinding.Ajax().Select("GetImages", "UserProducts"))
}

Llame a la función auxiliar dentro de la definición de contenido de la ventana. Las funciones auxiliares se pueden llamar varias veces si es necesario.

    @{Html.Telerik().Window()
      .Name("images")
      .Title("Select an Image")
      .Content(
       @<text>
          @RenderGrid()
       </text>)
      .Width(400)
      .Draggable(true)
      .Modal(true)
      .Visible(false)
      .Render();
} 

Respondido el 17 de diciembre de 15 a las 12:12

Casi listo, por favor revise ambas capturas de pantalla. no me sale ningun error mas que imagen esta vacio. Traté de renderizar como texto, mi ajax está funcionando. ¿Sabes por qué no recibo mis imágenes? prntscr.com/9ix3a prntscr.com/9ix3x - Novkovski Stevo Bato

Está utilizando el enlace ajax y, por lo tanto, necesita usar la plantilla del lado del cliente, en lugar de la plantilla del modo de enlace del servidor. Prueba esto: columns.Bound(c => c.ID).ClientTemplate("<img alt='<#= ID #>' src='<#= Url #>' />").Title("Picture"); - Igorroso

En MVC anterior @helper se usó como una solución para la incapacidad de nido @<text> etiquetas Pero en MVC CORE @helper se omite. Leer más aquí:

https://github.com/aspnet/Razor/issues/715

Respondido 03 ago 16, 12:08

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.