Kendo MVC UI Grid Email列ClientTemplate条件语法报错求助
Kendo MVC Grid Email列ClientTemplate语法修正
你的Email列ClientTemplate因引号嵌套冲突和模板表达式嵌套错误导致解析失败,以下是修正后的写法:
修正后的Email列配置
columns.Bound(o => o.Email).ClientTemplate("#= Email ? '<a href=\"mailto:' + Email + '\">' + Email + '</a>' : '' #");
关键修正点
- 移除嵌套的
#= Email #:当前已处于#= ... #的模板表达式上下文,直接使用变量名Email即可,无需重复包裹模板标记 - 用字符串拼接构建链接:避免多层引号嵌套引发的解析错误,同时确保mailto链接格式正确
- 简化空值判断:JavaScript中
null/undefined/空字符串会被判定为false,Email ? ... : ''可以直接实现“空值时不显示内容”的需求
完整修正后的Grid代码片段
@(Html.Kendo().Grid<MVCSite.Model.ProspectSearchContact>() .Name("gridContacts_#=ProspectId#") .Columns(columns => { columns.Bound(o => o.Id).Width(150).Visible(false); columns.Bound(o => o.ContactName).Title("Name").Width(100); columns.Bound(o => o.ContactType).Width(150); // 修正后的Email列ClientTemplate columns.Bound(o => o.Email).ClientTemplate("#= Email ? '<a href=\"mailto:' + Email + '\">' + Email + '</a>' : '' #"); columns.Bound(o => o.Phone).ClientTemplate("<a href='tel:\\#= Phone \\#'>\\#= Phone \\#</a>").Width(150); }) .ToolBar(toolbar => toolbar.Create()) .DataSource(dataSource => dataSource .Ajax() .Model(model => { model.Id(p => p.Id); model.Field(p => p.ProspectId).Editable(false); }) .PageSize(5) .Create(update => update.Action("NoteInsert", "DataSource", new { ProspectId = "#=ProspectId#" })) .Read(read => read.Action("ProspectGridItemDataSource", "ProspectingDataSource", new { Id = "#=ProspectId#", dataType = "Contact" })) .Update(update => update.Action("EditingPopup_Update", "Grid")) .Destroy(update => update.Action("EditingPopup_Destroy", "Grid")) ) .Pageable() .Sortable() .Editable(editable => editable.Mode(GridEditMode.PopUp).TemplateName("GridContactEntry")) .ToClientTemplate() )
内容的提问来源于stack exchange,提问作者Jay
相关产品推荐
相关产品推荐

