我是一个带有telerik网格的模态窗口。但我需要在我的网格中渲染图像,以便我理解我不能使用@两次。以下是有关此问题的博客文章Link
请有人帮助我。
我的代码
@{ 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();
}
我的GetImages函数使用“ID”和“URL”返回json。
答案 0 :(得分:17)
在这些情况下,可以使用MVC Razor辅助函数。
使用网格控件定义创建辅助函数,在本例中为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"))
}
在窗口的内容定义中调用辅助函数。如果需要,可以多次调用辅助函数。
@{Html.Telerik().Window()
.Name("images")
.Title("Select an Image")
.Content(
@<text>
@RenderGrid()
</text>)
.Width(400)
.Draggable(true)
.Modal(true)
.Visible(false)
.Render();
}
答案 1 :(得分:2)
在之前的MVC中@helper
被用作无法嵌套 @<text>
标记的变通方法。
但在MVC中,CORE @helper
被省略。在这里阅读更多内容: