You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 10:24:54