如何使用IF条件在ClientTemplate中添加超链接 - 用于ASP.NET MVC的Ajax Bound Kendo UI

时间:2016-11-10 15:03:45

标签: asp.net kendo-ui kendo-grid kendo-asp.net-mvc

我正在使用ASP.NET MVC。我想在Ajax Bound Kendo UI网格中将Account_Number列设置为HTML链接,而不是上一页的Account_Number搜索它。当点击Account_Number链接时,它应该将Account_Number传递给Customer控制器方法'QuickCheckSearch'。
以下代码不会在视图中填充网格,也不会将值调用/传递给控制器​​。请问有人请更正以下代码吗?

先谢谢。

  columns.Bound(p => p.Account_Number)
 .ClientTemplate("<#if (item.Account_Number == Model.AccountNumber){>Account_Number <# }" + "else{#><a href='" + Url.Action("QuickCheckSearch", "Customer") + "?Account_Number=#=Account_Number#'>#= Account_Number #</a> <# } #>")
 .Title("Account Number");

1 个答案:

答案 0 :(得分:0)

  1. 阅读http://docs.telerik.com/kendo-ui/framework/templates/overview
  2. 你到处都有太多的尖括号。您应该只将它们放在模板的实际HTML标记上,不是作为模板语法本身的一部分。尝试:

    .ClientTemplate(
        "# if (Account_Number ==" + @Model.AccountNumber + "){ #" +
            "#= Account_Number #" +
        "# }" +
        "else { #" +
             "<a href = '" + Url.Action("QuickCheckSearch", "Customer") + "?Account_Number=#=Account_Number#'>#= Account_Number#</a>" +
        "# } #"
    )
    
  3. 我发现在单独的行上格式化它确实很有帮助,就像你编写实际代码而不是所有代码一样,这样你就可以直观地看到结构了。

    你也可以这样做,这可能更干净:

    .ClientTemplate("#= accountLinkTemplate(data) #")
    ....
    <script>
         function accountLinkTemplate(data) {
            var template = data.Account_Number;
            if (data.Account_Number == " + @Model.AccountNumber + ") {
                template = "<a href = '" + "@Url.Action("QuickCheckSearch", "Customer")" + "?Account_Number=" + data.Account_Number+ "'>" + data.Account_Number+ "</a>";
            }
    
            return template;
        }
    </script>