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
Frecuentes
Visto 7,486 veces
11
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".
2 Respuestas
18
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
2
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í:
Respondido 03 ago 16, 12:08
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas asp.net-mvc-3 razor grid telerik or haz tu propia pregunta.
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