我正在使用 Kendo
ASP.NET MVC
制作网站页面。
我需要的是一个带有详细信息行的表格。在该详细信息行中,我需要 Kendo ScrollView 来显示图像。
当我尝试使用模板格式化
ScrollView
数据时,遇到错误,指示包含 ScrollView
的模板无效。
我是否无法使用嵌套模板
ScrollViews
,或者有没有办法实现这一点?
<script id="showDefectDetails" type="text/x-kendo-template">
@(Html.Kendo().ScrollView()
.Name("scrollView_#=DefectID#")
.ContentHeight("100%")
.TemplateId("scrollview-template")
.DataSource(dataSource => dataSource
.Custom()
.Type("aspnetmvc-ajax")
.Transport(transport => transport
.Read(read => read.Action("DefectImage_Read", "InspectionData", new { defectId = "#=DefectID#" }))
)
.Schema(s => s.Data("Data").Total("Total"))
.ServerPaging(true)
.PageSize(1))
.HtmlAttributes(new { style = "height:40vh; width:80vw" })
.ToComponent()
.ToClientTemplate()
)
</script>
<script id="scrollview-template" type="text/x-kendo-template">
<p>#=data.DisplayName#</p>
</script>`
请记住,kendo MVC 包装器如下:
@(Html.Kendo().ScrollView()
在服务器上由 Razor 进行处理,并在页面发送到浏览器之前转换为 JavaScript。
Kendo 模板依次在浏览器中进行处理。我不知道浏览器拥有“showDefectDetails”脚本后会是什么样子,但它似乎在模板上下文中最终无效。您可以使用浏览器工具来查找并查看您实际拥有的内容。
我看到您这里有一条模板化数据:
.Name("scrollView_#=DefectID#")
我怀疑这是否会像你希望的那样工作,因为在页面到达浏览器之前,它已经在服务器上进行了处理。
我的建议是使用 jquery 插件语法而不是模板中的 Razor 语法创建滚动视图。
最终的解决方案是直接将滚动视图的内容以 HTML 形式写入模板函数