Kendo UI ASP.NET MVC中if语句被识别为文本而非代码的问题
解决Kendo UI ASP.NET MVC ClientTemplate中if语句被识别为文本的问题
你的代码问题在于Kendo的ClientTemplate需要用模板代码块语法包裹JavaScript逻辑,否则会被当作纯文本输出。同时服务器端变量queryLevel的注入方式需要调整,避免引号转义错误。
修改后的代码
@{ var queryLevel = ViewBag.queryLevel as string; } columns.Template(@<text></text>).ClientTemplate( "<div class=\"text-center\">" + // 用Kendo模板代码块包裹JS逻辑,# 开头结尾表示执行代码 "# if('" + @Html.Raw(Json.Encode(queryLevel)) + "' === 'Well') { #" + "<span>Ya</span>" + "# } #" + "<form action=\"/AssetOperationProduction/Update\" method=\"post\" style=\"display:inline\">" + "<input type=\"hidden\" name=\"Id\" value=\"#= Id #\" />" + "<button class=\"btn btn-secondary text-white m-1\" type=\"submit\"><i class=\"fa-solid fa-pencil\"></i></button></form>" + "<form action=\"/AssetOperationProduction/Delete\" method=\"post\" style=\"display:inline\">" + "<input type=\"hidden\" name=\"Id\" value=\"#= Id #\" />" + "<button class=\"btn btn-danger text-white m-1\" type=\"submit\"><i class=\"fa-solid fa-trash\"></i> " + @Html.Raw(Json.Encode(queryLevel)) + " </button></form>" + "</div>" ).Width(200);
关键修改点
- Kendo模板代码块:用
# 代码 #包裹JavaScript逻辑(这里的if判断),告诉Kendo这是需要执行的代码而非文本。 - 服务器端变量转义:用
@Html.Raw(Json.Encode(queryLevel))处理queryLevel,确保字符串中的特殊字符(比如引号)被正确转义,避免破坏客户端模板的语法结构。 - 保持数据绑定:原有的
#= Id #是Kendo的字段绑定语法,继续保留即可正常读取行数据。
内容的提问来源于stack exchange,提问作者Syahrul Romadoni
相关产品推荐
相关产品推荐

